2016-02-05 60 views
2

我試圖以userA身份登錄到服務器,然後切換到root帳戶並運行一些命令。這些步驟應該是這樣的:如何以root身份遠程運行命令?

  1. SSH [email protected]
  2. 蘇 - 根
  3. WHOAMI

我實現了第1步用下面的代碼,但不知道如何實現步驟2和3

#!/usr/bin/expect -f 
set timeout 12 
set password_root 12345678 
set password_A 12345678 

spawn ssh -t [email protected] 
expect -re ".*password:" 
send "$password_sflow\r" 
expect eof 
+0

最後一行時,不要使用指望EOF,但instea d期待新的提示,並繼續使用發送/期望報表。閱讀一些教程,有很好的教程來說明你的用例。一個示例:https://gist.github.com/Fluidbyte/6294378 – sal

回答

1
#!/usr/bin/expect 
set timeout 12 
set password_root 12345678 
set password_A 12345678 

set prompt "#|>|\\\$ $" 
spawn ssh -t [email protected] 
expect { 
     timeout {puts TIMEOUT} 
     "yes/no" {send "yes\r";exp_continue} 
     "password:" {send "user1password\r";exp_continue} 
     -re $prompt 
} 
send "su - root\r" 
expect "Password:" 
send "rootpassword\r" 
expect -re $prompt 
send "whoami\r" 
expect -re $prompt 

# and to exit 
send "exit\r"  ;# exit su 
expect -re $prompt 
send "exit\r"  ;# exit ssh 
expect eof 
相關問題