我正在寻找任何使用expect完成此任务的方法:
Mac-mini:~ root# scp file peter@Mac-mini:file2
The authenticity of host 'mac-mini (192.168.1.105)' can't be established.
RSA key fingerprint is b6:12:3e:48:10:e6:d2:1f:8f:57:f4:01:2d:f3:23:89.
Are you sure you want to continue connecting (yes/no)? yes
Password: ********并发出
crontab -l > crontab.src发布于 2014-11-02 05:33:15
#!/usr/bin/expect
set machine0 "Mac-minimini"
set machine1 "Mac-mini"
set machine2 "Mac-pro"
...
set machine19 "Mac-air"
for {set i 1} {$i < 20} {incr i 1} {
eval spawn scp file peter@${machine${i}}:file2
expect "connecting (yes/no)?"
send "yes\r"
#use correct prompt
set prompt ":|#|\\\$"
interact -o -nobuffer -re $prompt return
send "password\r"
interact -o -nobuffer -re $prompt return
send "crontab -l > crontab.src\r"
interact
}编辑:您可以使用for循环,并使用循环变量连接每个机器的名称。(例如,Mac-mini0,Mac-mini1,...Mac-mini19)
Edit2:我不确定${machine${i}}是否可以工作,但值得一试。
发布于 2014-11-02 05:34:23
如下所示设置ssh密钥:
ssh-keygen -t rsa将您的公钥放在远程机器上(假设您在主目录中创建了一个名为id_rsa的密钥)
ssh-copy-id peter@Mac-mini然后,您将能够在不输入密码的情况下执行scp。
autoexpect -f scp file peter@Mac-mini:file2对于crontab部分,我假设您指的是在远程机器上。
autoexpect -f crontab ssh peter@Mac-mini "crontab -l > crontab.src"https://stackoverflow.com/questions/26693420
复制相似问题