Linux-Bash&;期待
我使用expect将密钥复制到远程linux设备 复制密钥Linux-Bash&;期待,linux,bash,ssh,expect,Linux,Bash,Ssh,Expect,我使用expect将密钥复制到远程linux设备 复制密钥 #!/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\u
#!/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\u key 1.1.1.1生成的\u密码调用的
我想将所有这些迁移到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;"
您想摆脱expect,还是出于某种原因想将其包装到shell脚本中?为什么?我试着把它扔掉,但没用。它需要调整。这是一个要求,所以所有脚本都必须在同一个bash脚本上。您想用bash脚本替换它,而不是使用expect?还是使用expect的bash脚本?具体要求是什么?1美元和2美元是参数,所以应该是如下所示的?stty echo&&expect-c“spawn ssh copy id-i/home/myuser/mykey.pub root@$REMOTEhost;expect\”密码:\“send\”$REMOTEpass\r\“sleep 2;”?如果expect示例对您有效,这个也应该有效。我是否需要在前面加“/usr/bin/expect”/usr/bin/expect stty echo&&expect-c“spawn ssh copy id-i/home/myuser/mykey.pub root@$REMOTEhost;expect\”password:\“send\”$REMOTEpass\r\“sleep 2;”如果要创建bash脚本,则将
哪个bash
的输出放在其头中。如果哪个expect
或键入expect
在根文件系统中返回expect路径,则在提供的示例中,不需要将expect替换为/path/to/expect。在一艘班轮前面不应该有任何东西。