Я думаю Вы, проблема не находится в перенаправлении портов, но другой опции в конфигурации NAT в маршрутизаторе.
Во-первых, удостоверьтесь при использовании IP LAN Вы можете успешно SSH от другой машины в сети. Это гарантирует работы SSH вообще.
Во-вторых, тест от другой машины вне сети с помощью общедоступного IP. Это гарантирует тому перенаправлению портов работы.
В-третьих, протестируйте от той же самой машины вне сети и используйте DynDNS URL. Это гарантирует, что DynDNS работает правильно.
Если все те успешно выполняются, то ничто не неправильно с Вашей конфигурацией (который я приму, корректно), и Вы, проблема только получает доступ к общедоступному IP (или непосредственно или через DynDNS) из сети. Это означает, что Ваш маршрутизатор должен иметь включенное отражение NAT (если возможный) для маршрутизации внутренних запросов, как будто они были внешними запросами на общедоступный IP.
Вы не должны передавать файл по каналу через grep, grep берет имя (имена) файла в качестве командной строки args.
grep -v '^#' file1 file2 file3
распечатает все строки КРОМЕ тех, которые начинают с # символа. можно изменить символ комментария на то, чего Вы желаете.
Если у Вас есть больше чем один символ комментария (принятие в начале строки)
egrep -v '^(;|#|//)' filelist
grep '^[^;]' filename
. Я не могу говорить с его мобильностью хотя!
– Jodie C
08.12.2012, 15:57
egrep
grep -E
. Можно также использовать grep -ve '^[;#]' -e '^//'
– Stéphane Chazelas
28.01.2013, 14:30
egrep
может сохранить Вас использование cat
. Другими словами, создайте меньше процессов (egrep
по сравнению с cat
+egrep
) и использование меньше буферов (передают по каналу от cat
кому: egrep
по сравнению ни с каким каналом).
Это обычно - хорошая идея ограничить использование cat
если Вы просто хотите передать файл команде, которая может считать его самостоятельно.
С этим сказал, следующая команда удалит комментарии, даже если они будут расположены с отступом с пробелами или вкладками:
egrep -v '^[[:blank:]]*;' file.ini
[[
класс символов ]]
формат regex с использованием egrep
команда удержана от использования, по крайней мере, в течение десятилетия или около этого.
– mikeserv
13.03.2014, 18:25
egrep -v '^;|^$' $file
это исключит строки, которые начинаются''; и пустые строки.
в regex, ^
указывает на начало строки, и $
конец строки, таким образом, ^$
указывает строки, где запуск символа строки и конец символа строки друг прямо рядом с другом.
egrep -v '^;'
– Michael Mrozek♦
07.12.2011, 07:44
egrep -v '^[[:blank:]]*;' file.ini
– nrolans
07.12.2011, 08:55
Простое awk
острота awk '/^;/{next}1' input_file
должен добиться цели.
[jaypal:~/Temp] cat file
; - Show all errors, except for notices
;
;error_reporting = E_ALL & ~E_NOTICE
;
; - Show only errors
;
;error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR
;
; - Show all errors except for notices
;
error_reporting = E_ALL & ~E_NOTICE
[jaypal:~/Temp] awk '/^;/{next}1' file
error_reporting = E_ALL & ~E_NOTICE
[jaypal:~/Temp]
Разработка на ответе @shabunc, это использует Perl, чтобы разделить комментарии (включая встроенные комментарии), затем распечатать любые строки, содержащие что-либо кроме пробела.
$ perl -ne 's/;.*//; print if /\S/' data.txt
Объяснение:
s/;.*//
использует оператор замены (s/<regex>/<replacement>/
) заменять экземпляры точки с запятой и всего после него на строке с пустой строкой.print if /\S/
печатает строку, если она соответствует regexp \S
, который является классом символов, соответствующим всем непробельным символам.А также Jaypal, я также по всей вероятности использовал бы awk
в этих целях. Это хуже, чтобы упомянуть, что жемчуг иногда довольно удобен в таких целях:
cat data.txt | perl -lne "print unless /^;/"
Perl regexps более мощен по сравнению с одним awk, и иногда Вам, возможно, понадобились бы они.
perl -ne 'print unless /^;/' data.txt
– Simon Whitaker
08.12.2011, 05:59
cat
хорошо работает в этих примерах, если Вы считаете это как прокси для более универсального "чем-нибудь генерирующим текст на STDOUT". Каналы Unix являются лучше не бывает, по моему скромному мнению. :)
– Simon Whitaker
08.12.2011, 11:43
Вот тот, который я использую, просто заменяю''; с символом комментария (например, '#' для многих сервисных конфигурационных файлов UNIX):
grep -Ev '^[[:space:]]*;|^$' chan_dahdi.conf.sample | sed 's/;.*$//'
Это избавляется от всех комментариев целой строки (даже если у них есть ведущий пробел), и любые комментарии, что нестроки комментария конца, и кратко удаляют пустые строки из вывода также. Это может быть возможно без конвейера (мой sed-, или awk-fu является по общему признанию не большим), но для меня настолько легко понять (и помнить), я полагал, что отправлю его здесь.
Шоу в качестве примера только строки + не показывает новые строки или emtpy строки:
$ egrep -v '^(;|#|//)' /etc/ssh/sshd_config | tr '\n' ' '
Protocol 2 SyslogFacility AUTHPRIV PasswordAuthentication yes ChallengeResponseAuthentication no GSSAPIAuthentication yes GSSAPICleanupCredentials yes UsePAM yes AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE AcceptEnv XMODIFIERS X11Forwarding yes Subsystem sftp /usr/libexec/openssh/sftp-server
ИЛИ
$ egrep -v '^(;|#|//|$)' /etc/ssh/sshd_config
Protocol 2
SyslogFacility AUTHPRIV
PasswordAuthentication yes
ChallengeResponseAuthentication no
GSSAPIAuthentication yes
GSSAPICleanupCredentials yes
UsePAM yes
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS
X11Forwarding yes
Subsystem sftp /usr/libexec/openssh/sftp-server
egrep
долго удерживается от использования. grep -E
команда, которую Вы ищете здесь. строки кода
– mikeserv
13.03.2014, 18:23
egrep -v ^'(#|$)' file.txt
Сносит все комментарии и пустые строки из file.txt
.вы можете использовать следующую команду для сохранения строк, исключая пустые строки и строки, начинающиеся с # в новом файле
cat <файл для чтения> | egrep -v '^ # | ^ $'> <файл для записи в>