SSH, туннелирующий через брандмауэр к кластеру

Сообщение об ошибке означает, что у вас обратная косая черта. В мире *nix специальные символы 'экранируются' путем добавления обратного слеша перед ними. Это означает, что они интерпретируются как простые символы, а не как специальные. Например:

$ printf 'foo\nbar'
foo
bar

\n - это специальный символ, означающий newline. Но если мы избавимся от слэша, то получим:

$ printf 'foo\\nbar'
foo\nbar

Так что от него можно избавиться либо экранированием обратного слеша:

touch ~/deleted/"$(echo "directory_$(readlink -f -- "$1")"|tr '/' '\\')

, либо перенаправлением вывода ошибки tr (а не touch, что вы делали):

touch ~/deleted/"$(echo "directory_$(readlink -f -- "$1")"|tr '/' '\' 2> /dev/null)

Однако, я не могу в достаточной мере подчеркнуть, что это очень плохая идея® для создания имен файлов с обратным слешем. Действительно. В дальнейшем с ними будет чертовски сложно разобраться и разобраться. Почему бы не использовать другой символ?

1
02.12.2014, 14:45
2 ответа

Не совсем ответ, который вы попросили, но необходимо смочь передать файлы посредством соединения SSH:

отправка

ssh user1@firewall "ssh user2@cluster \"cat > remote_file\" "  < local_file

выборка

ssh user1@firewall "ssh user2@cluster \"cat remote_file\" "  > local_file

РЕДАКТИРОВАНИЕ:

существуют также на терминальном основанные инструменты передачи файлов как "zmodem"

1
27.01.2020, 23:51

Читайте о обратном SSH. Может быть, это поможет вам. Я использую его для подключения к удаленным хранилищам за Nat.

0
27.01.2020, 23:51

Теги

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