Я действительно мог бы помочь. Я все еще довольно новичок. Мне нужно запустить команду scp непосредственно после запуска sftp.ожидать: запуск scp после sftp
У меня есть первая часть этого скрипта, моя основная проблема - нижняя часть. Мне действительно нужно запустить команду после завершения этой команды. Я предпочел бы создать другую команду, кроме как взломать что-то вроде того, как это сделать с помощью команды sleep и запустить ее через 10 секунд или что-то странное.
Любые предложения приветствуются!
spawn sftp [email protected]
expect "password: "
send "123\r"
expect "$ "
sleep 2
send "cd mydir\r"
expect "$ "
sleep 2
send "get somefile\r"
expect "$ "
sleep 2
send "bye\r"
expect "$ "
sleep 2
spawn scp somefile [email protected]:/home/user2/
sleep 2
Так я понял, что я могу на самом деле получить это запустить подпроцесс, если я использую «Exec» вместо икры .. другими словами:
exec scp somefile [email protected]:/home/user2/
единственная проблема? Он подсказывает мне пароль! Этого не должно быть, у меня уже есть ssh-ключи, установленные на обеих системах. (Другими словами, если я запустил команду scp с хоста, я запускаю этот сценарий ожидания, он будет работать без запроса пароля). Система, к которой я пытаюсь выполнить scp, должна распознавать этот недавно возникший процесс как новый хост, потому что он не собирает мой ssh-ключ. Есть идеи?
BTW, я извиняюсь, что на самом деле я не опубликовал «рабочий» сценарий, но я не могу этого сделать без обеспечения безопасности этого сервера. Надеюсь, это не умаляет возможности помочь мне.
Я думаю, что проблема заключается в том, что я не прекращаю первоначальный процесс. Я не понимаю, что этого достаточно, чтобы сделать это правильно. Если я попытаюсь «закрыть» или «eof», он просто уничтожит весь скрипт, который я пока не хочу делать (потому что мне все еще нужно скопировать файл на второй хост).
Вы отправляете команды в sftp, тогда вы хотите выполнить команду scp и снова хотите отправить команды в sftp? – Dinesh
Dinesh, я пытаюсь захватить файл из host-a через sftp и поместить его на host-b через scp. Нам предоставляется только доступ к host-a через sftp, поэтому использование scp на host-a (или любой другой метод) не является вариантом. – slugman
Возможно, вы захотите использовать (по сути, скриптовый) клиент, такой как lftp, который может говорить оба протокола. Не нужно писать два разных клиента. –