Удаление ведущего`#`с помощью awk

Вы можете использовать две команды ssh: одну для туннеля, другую для входа в систему (, если только вы не перенаправляете/маршрутизируете порты, которые в данный момент не делаете):

ssh -f -l linda -L 2211:virtualMachine:221 workStation -N

Тогда

ssh -l linda -p 2211 localhost

и войдите в virtualMachineздесь.

РЕДАКТИРОВАТЬ :Также попробуйте (, предложенный francois P)

ssh -J linda@workStation linda@virtualMachine:221

EDIT2 :Если проблема не устранена, это может быть связано с параметрами узла перехода (рабочей станции ), см. также здесь:Ошибка туннелирования SSH :"канал 1 :не удалось открыть :административно запрещено :открыть не удалось" . В частности,посмотрите, есть ли на рабочей станции в файле /etc/ssh/sshd_configэти строки

AllowTcpForwarding yes
PermitOpen any
PermitTunnel yes

Перезапуск sshdпосле внесения изменений в файл:

systemctl restart sshd

-2
02.11.2021, 11:02
2 ответа

Вы можете попробовать с помощью этой команды

awk '{sub(/^#*/,"",$0);print }' filename
0
05.11.2021, 07:20

Вы получаете этот результат, потому что вы явно указываете своей программе удалить только один #, так что это то, что она делает:

sub(/^[[:space:]]*#[[:space:]]*/,"")

Если вы измените это, чтобы использовать #+для удаления одного или нескольких #, все будет работать должным образом. Затем вам нужна пустая строка между разделами, поэтому вам понадобится дополнительный print "", когда вы найдете конец. Измените свою функцию на эту:

capture ()
{
 local efile="$1"

 local begorg endorg 
 begorg='^[[:space:]]*## mode: org$'
 endorg='^[[:space:]]*## # End of org$'
 awk -v bego="$begorg" -v endo="$endorg" \
   '$0 ~ bego { flag=1; next } 
    $0 ~ endo { flag=0; print "" } 
    flag { sub(/^[[:space:]]*#+[[:space:]]*/,""); print }' "$efile"
}

Вышеизложенное дает:

$ capture file
* Using case statement

** Silent Error Reporting Mode (SERM) in getopts
*** Detects warnings without printing built-in messages.
*** Enabled by colon {:} as first character in shortopts.

HDG: Handling function argument parsing with getopts
Rmk: No call to {shift} is required with getopts
Rmk: No hyphen {-} required when searching option names
+ Case patterns do not start with option hyphen {-} because
+ getopts strips off the hyphen and makes the value of {arg}
+ to be just the option letter.
Rmk: Separating options from non-options with --
+ {getopts} stops processing options when the argument is not
+ defined as an option in {shortopts}; or if the argument is
+ "--", which explicitly terminates the list of options.
Rmk: Using -- as value to an option
+ An option value can be -- without it being considered a
+ separator between options and non-options.
+ Example { edvart-getopts -g "--" }.
Rmk: Explicitly testing for {--}
+ There is no need to test for {--} when using {getopts}.

Обратите внимание, что эта строка не комментируется, как в вашем примере вывода, но я предполагаю, что это была просто ошибка, поскольку в этой строке нет ничего особенного:

# Rmk: Using -- as value to an option
4
02.11.2021, 12:01

Теги

Похожие вопросы