2015-05-23 3 views
0

Я пытаюсь создать сценарий bash для ssh в сеансе и запустить команду, а затем выйти из сеанса. В настоящее время это то, что я до сих пор:Bash скрипт для запуска и выполнения команд

#!/usr/bin/expect -f 

spawn ssh [email protected] 
expect "assword:" 
send "password\r" 
expect "#" 
send "cd /data2/someDirectory\r"------> don't see this command being executed 

и выход

[[email protected] ddb]$ test1 
spawn ssh [email protected] 
[email protected]'s password: 
SC02 RH 7.3 (0000009B 02.11.0.1) 
[[email protected] /]# [[email protected] ddb]$ 
[[email protected] ddb]$ 

Так что мой вопрос, почему не каталог, установленный на MyDirectory и он просто выходит из сессии?

+1

Почему вы это делаете? Настройте свои ключи, чтобы вам не нужно вводить пароль, затем выполните 'ssh user @ remote cmd' –

+1

Это не скрипт' bash'; это сценарий 'expect'. – chepner

+0

добавьте 'send 'pwd \ r" 'или' send' ls -l \ r "' после вашего cd cmd и посмотрите, есть ли у вас что-нибудь. Удачи. – shellter

ответ

3

Ваш expect сценарий делает то, что вы собираетесь, но уходит, как только задание send сделано.

установить некоторое «ожидание» как expect "$" в конце сценария и попробуйте.

#!/usr/bin/expect -f 

spawn ssh [email protected] 
expect "assword:" 
send "pass\r" 
expect "#" 
send "\r" 
send "pwd\r" 
send "\r" 
send "cd /tmp\r" 
send "touch dummy\r" 
expect "$" 
+0

Спасибо за ваш ответ, он работает сейчас, как и ожидалось. – kkmoslehpour

Смежные вопросы