Unix: оператор перенаправления и оператор оператора Pipe в SFTP
Как работать с командами перенаправления и связанными с оператором трубы в SFTP?
В настоящее время я подключился к SFTP через SSHPASS, как показано ниже
[oouser@SVSATVMWHOST03-SITHPOO test]$ sshpass -e sftp -o BatchMode=no -b - backup_sftp@10.58.44.207:/Restore
Changing to: /Restore
pwd
sftp> pwd
Remote working directory: /Restore
Снова,
ls -ltr
sftp> ls -ltr
-rw-r----- 1 1500 1500 421782831 Jul 19 12:43 mOneBackup_IMS_20170719081701.tgz
-rw-r----- 1 1500 1500 374262100 Jul 24 11:54
mOneBackup_IMS_20170724010013.tgz
Это дает вывод файлов результатов ls -ltr, расположенных в приглашении sftp, что нормально.
Но,
Мне нужна команда для просмотра / получения перенаправленного вывода ls -ltr с | (операция конвейера) и имя последнего файла, расположенного в приглашении SFTP
При отправке команд с оператором канала (|) в приглашении SFTP - сервер выдает "Не удалось определить удаленный файл: такого файла или каталога нет"
ls -ltr | tail -1
sftp> ls -ltr | tail -1
Couldn't stat remote file: No such file or directory
Can't ls: "/Restore/|" not found**
[oouser@SVSATVMWHOST03-SITHPOO test]$
Как работать с конвейером и операцией перенаправления в SFTP-запросе?
1 ответ
Краткий ответ: "|" не имеет особого значения для sftp
команда "ls"
sftp> !ls -ltr | tail -1
Здесь вы используете sftp "!" команда для запуска команды в вашей локальной системе. Остальная часть линии, ls -ltr | tail -1
, передается в локальную оболочку. Sftp не интерпретирует "|" в этой строке; твоя оболочка делает. Единственная часть этого, которая является особенной для sftp, это ведущий "!".
sftp> ls -ltr | tail -1
Здесь вы используете команду sftp "ls" для вывода информации об удаленных файлах с именами "!", "Tail" и, возможно, "-1". Полученное сообщение об ошибке указывает на отсутствие удаленного файла с именем "|".
Насколько я могу судить, командная строка sftp
Утилита не поддерживает перенаправление и конвейер для отдельных интерактивных команд.