Linux - Bash&期望

时间:2015-06-05 18:40:09

标签: linux bash ssh expect

我使用expect将我的密钥复制到远程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 个答案:

答案 0 :(得分:0)

这将是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;"