Linux - Bash 和 Expect

标签 linux bash ssh expect

我使用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/

相关文章:

c - flockfile() 一个在 Linux 上被 fclosed()ed 的 FILE* 是否安全?

linux - 如何在 FIND 命令结果中排除几个文件夹级别 - unix

linux - 绕过 Linux 集群网关 - 从桌面直接进入节点

linux - find 返回反转结果

mysql - 错误 1193 (HY000) : Unknown system variable 'userstat'

linux - 通过 SSH 连接代理命令

c - read() 和 write() 中内存区域参数的大小如何影响 IO 性能?

linux - 黑客可以用非 root 用户 (Linux) 做什么?

linux - 如何使用bash输出目录中多个文件的文件大小?

android - 使用sed操作xml文件