Как использовать скрипт ожидаемого в ruby ​​на рельсах? - PullRequest
0 голосов
/ 18 марта 2011

Можете ли вы помочь мне? Как я могу использовать сценарий ожидаемого в ruby. </p> <pre> spawn scp /tmp/*.txt remoteserver:/vg/ expect "password" send "MY PASSWORD" interact </pre> <p>

Потому что мне нужно перенести массовые файлы с одного сервера на другой сервер с помощью команды scp. Но когда я использую передачу файла с подстановочными знаками (/tmp/*.txt), он показывает следующую ошибку

Нет такого файла или каталога Убит по сигналу 1.

Затем я изменил свой код следующим образом. (Примечание: я использовал имя файла напрямую). </p> <pre> spawn scp /tmp/first.txt remoteserver:/vg/ expect "password" send "MY PASSWORD" interact </pre> <p>

Итак, я только что прыгнул в рельсы. </p> <pre> $files = Dir.glob("/tmp/*.txt") for f in @files [I need to use the expect script here] expect {....#{f}...} end </pre> <p> Спасибо

Ответы [ 2 ]

2 голосов
/ 18 марта 2011

Вы хотите использовать ssh-ключи для этого. Это не сложно настроить, тогда вам не нужно об этом беспокоиться.

Вы, вероятно, хотите, чтобы ожидаемый скрипт выглядел следующим образом:

set scp_command [linsert $argv0 scp]
lappend scp_command remote_server:/vg/
eval spawn $scp_command

expect password
send "MYPASSWORD\r"
expect eof

и часть Ruby будет выглядеть как

system "expect", "expect_script.exp", Dir.glob("/tmp/*.txt")
0 голосов
/ 28 марта 2011

Гленн упомянул об использовании ключей ssh ​​- они определенно облегчат вашу жизнь, когда вы работаете со сценариями Expect.

Несколько лет назад я написал в блоге сообщение о том, как использовать генерацию и использование ключей ssh ​​с замазкой.в Windows.

http://soniahamilton.wordpress.com/2008/09/05/how-to-use-putty-with-ssh-keys-on-windows/

...