2016-02-05 6 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

Последняя линия, не использовать ожидать ВФ, но instea d ожидать в новом приглашении и продолжать работу с операторами send/expect. Прочтите несколько руководств, есть хорошие, чтобы покрыть ваш случай использования. Один образец: 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 
Смежные вопросы