こんにちは B MR W はい、これはよく出てくるので、expect スクリプトを投稿します。
E2A 手順は Linux 用です
Mac には期待があります https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/expect.1.html
スクリプトをいじる意味があるかもしれませんMacの基準は、私がそれについて十分な知識を持っていないことを期待していますが、原則として、以下のプロセスを見てみるとうまくいくはずです
ssh-copy-id またはスクリプトのどちらに興味がありましたか?
スクリプトを実行するには、次のことが必要です
sudo-apt-get install expect or
sudo yum install expect
インストールしたら
これは典型的なスクリプトです:
#!/usr/bin/expect -f
set force_conservative 1
if {$force_conservative} {
set send_slow {1 .001}
proc send {ignore arg} {
sleep .001
exp_send -s -- $arg
}
}
;# Validate user input - make sure all fields required are given
if {$argc >= 1} {
;# Setting password
set user "MYUSER";
set supass "MYPASSWORD"
set host [lindex $argv 0]
# set command1 [lindex $argv 2]
set prompt "(:|#|%|>|\\\$|% |# |> |\\\$ )"
set prompt1 "(>)"
set timeout -1
;###############################################################
;#connect to specified host given by addstaff or globalstaff.
spawn ssh $user@$host
expect {
"*word:*" {}
"*(yes/no)?*" {
send - "yes\r"
expect "*word:" { }
}
}
send - "$supass\r"
expect eof exit -re $prompt
send - "sudo bash\r"
expect {
"*word:*" {
send "$supass\r"
expect eof exit -re $prompt
}
"*" {
expect eof exit -re $prompt
}
}
send - "whoami\r"
expect eof exit -re $prompt
interact
;#send - "$command\r"
;# expect eof exit -re $prompt
;#Logout of current ssh session
;#send - "exit\r"
;#expect eof exit -re $prompt
;#send - "exit\r"
;#expect eof exit -re $prompt
} else {
send - "echo Sorry require user host command \n\n\r";
exit
}
送信されていないコマンドをコメントアウトしたことに気付いた場合は、対話モードを使用して、パスワードなしで実際にログインできるようにします。スクリプトの上部にユーザーパスワードが定義されています...ログインしたら、入力したとおりに入力します通常のsshごとに
これが私がローカルで実行しているところです:
whoami
myuser
./ssh-connection.exp localhost
spawn ssh myuser@localhost
myuser@localhost's password:
Welcome to Ubuntu 12.04.2 LTS (GNU/Linux XXXX)
* Documentation: https://help.ubuntu.com/
Last login: Sat Sep 7 20:19:53 2013 from localhost
sudo bash
This is BASH 4.2- DISPLAY on localhost:0.0
Sat Sep 7 20:25:09 BST 2013
whoami
[20:25 myuser@myuser-DP ~] > sudo bash
whoami
This is BASH 4.2- DISPLAY on localhost:0.0
Sat Sep 7 20:25:09 BST 2013
[20:25 myuser@myuser-DP ~] > whoami
root
[20:25 myuser@myuser-DP ~] > whoami
root
スクリプト内では sudo bash も実行されるため、localhost に再接続され、root になります。