Вы могли бы увеличить многословность и получить список идентифицированных файлов, например, для Python:
cloc -v=3 . | grep 'call_counter(.* Python)'
Образец вывода:
-> call_counter(./data/action_i18n_strings.py, Python)
-> call_counter(./files/usr/share/nemo/actions/myaction.py, Python)
А затем вручную проверить файлы, прочитав их.
Счетчик call_counter
вызывается один раз для каждого подходящего файла.
Версии до 1.64 идентифицировали только скрипты Python, проверяя наличие расширения .py
. Начиная с версии 1.64 cloc
идентифицирует Python также по shebang:
Добавлены python, python2.6, python2.7, python3, python3.3, python3.4 в качестве исполняемых файлов сценария для идентификации файлов Python, которые не заканчиваются на .py.
Что касается последней dev. версии, она ищет эти окружения:
%{$rh_Language_by_Script} = ( # {{{1
'awk' => 'awk' ,
'bash' => 'Bourne Again Shell' ,
'bc' => 'bc' ,# calculator
'crystal' => 'Crystal' ,
'csh' => 'C Shell' ,
'dmd' => 'D' ,
'dtrace' => 'dtrace' ,
'idl' => 'IDL' ,
'kermit' => 'Kermit' ,
'ksh' => 'Korn Shell' ,
'lua' => 'Lua' ,
'make' => 'make' ,
'octave' => 'Octave' ,
'perl5' => 'Perl' ,
'perl6' => 'Perl' ,
'perl' => 'Perl' ,
'miniperl' => 'Perl' ,
'php' => 'PHP' ,
'php5' => 'PHP' ,
'python' => 'Python' ,
'python2.6'=> 'Python' ,
'python2.7'=> 'Python' ,
'python3' => 'Python' ,
'python3.3'=> 'Python' ,
'python3.4'=> 'Python' ,
'python3.5'=> 'Python' ,
'rexx' => 'Rexx' ,
'regina' => 'Rexx' ,
'ruby' => 'Ruby' ,
'sed' => 'sed' ,
'sh' => 'Bourne Shell' ,
'swipl' => 'Prolog' ,
'tcl' => 'Tcl/Tk' ,
'tclsh' => 'Tcl/Tk' ,
'tcsh' => 'C Shell' ,
'wish' => 'Tcl/Tk' ,
'zsh' => 'zsh' ,
);
# 1}}}
У меня почти точная настройка и проблема.
Насколько я могу судить, сеть с пространством имен просто не хочет, чтобы к ней был доступ извне. Вероятно, существует какое-то правило iptables
, которое позволяет сопоставлять 192.168.1.*:9091
с 10.200.200.2:9091
, но я прибегал к использованиюsocat
в качестве обходного пути, чтобы сделать сеть 10.200.200.*
доступной через фактический IP-адрес,192.168.1.*
Я предполагаю, что 10.200.200.2
— это IP-адрес, к которому привязан демон передачи rpc в пространстве имен nordvpn. Вы должны получить эту информацию, используя ip netns exec nordvpn ifconfig vpn1
. Найдите значение inet addr
.
Вы можете убедиться, что служба rpc работает, используя ip netns exec nordvpn transmission-remote --auth <username>:<password> -si
для получения информации о сеансе.
Затем соедините виртуальную сеть и реальную сеть для порта 9091
с помощью socat :
socat tcp-listen:9091,reuseaddr,fork tcp-connect:10.200.200.2:9091
Вы также можете превратить его в демона для бедняков, запустив его как запланированное задание, используяat
echo 'socat tcp-listen:9091,reuseaddr,fork tcp-connect:10.200.200.2:9091 > /dev/null 2>&1' | at now
Обратите внимание, что аргумент fork
для socat
создает несколько дочерних процессов. Вы можете остановить их позже, используяpkill -f 'socat tcp-listen:9091'
После этого вы сможете получить к нему доступ со своего рабочего стола, используя IP-адрес Ubuntu Box.
Извините, что некролирую это, но это подходит для релевантного поиска. Я следовал тому же руководству и имею те же проблемы. Ответ Кетвару мне не помог, поэтому мне пришлось немного покопаться.
Вот что я нашел:
sudo socat tcp-listen:9091,fork,reuseaddr exec:'ip netns exec vpn socat STDIO "tcp-connect:10.200.200.2:9091"',nofork
Спасибо автору с этого сайта:https://newbedev.com/port-forwarding-to-application-in-network-namespace-with-vpnза рабочее решение И служебный файл systemd , если вы хотите сохранить решение socat
iptables -t nat -A PREROUTING -p tcp --dport 9091 -j DNAT --to-destination 10.200.200.2:9091
iptables -t nat -A POSTROUTING -p tcp --dport 9091 -j MASQUERADE
спасибо автору здесь:https://npre.wordpress.com/2012/09/15/port-forwarding-with-iptables/за понимание этого.
Я продолжал думать, что должна быть запись iptables через сетевое пространство имен, но я ошибался, эти две записи делают то, что требуется.
Надеюсь, это поможет тем, кто пытается настроить маршрутизацию портов из локальной сети в сетевое пространство имен.