我使用expect将我的 key 复制到远程Linux机器。
copy_key
#!/usr/bin/expect
stty echo
set REMOTEhost [lindex $argv 0]
set REMOTEpass [lindex $argv 1]
spawn ssh-copy-id -i /home/myuser/mykey.pub root@$REMOTEhost
expect "password: "
send "$REMOTEpass\n"
sleep 2
这是通过./copy_key 1.1.1.1 GENERATED_PASSWORD
调用的
我想将所有这些迁移到 bash 脚本中。
类似于以下内容,当然有所不同,但只是为了提供一个想法:
#!/bin/bash
/usr/bin/expect -c 'expect "\n" { eval spawn ssh -oStrictHostKeyChecking=no -oCheckHostIP=no usr@$myhost.example.com; interact }'
这不起作用
#!/bin/bash
ssh-copy-id -i /home/myuser/mykey.pub root@$REMOTEhost
我怎样才能做到这一点?
最佳答案
这将是 1:1 bash 脚本:
#!/bin/bash
stty echo && expect -c "spawn ssh-copy-id -i /home/myuser/mykey.pub root@$1; expect \"password: \"; send \"$2\r\"; sleep 2;"
关于Linux - Bash 和 Expect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30673596/