Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux-Bash&;期待_Linux_Bash_Ssh_Expect - Fatal编程技术网

Linux-Bash&;期待

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

我使用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 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。在一艘班轮前面不应该有任何东西。