期望脚本无法与 bash 脚本一起使用

期望脚本无法与 bash 脚本一起使用

我想要一个脚本,通过 ssh 连接到远程服务器,然后运行本地计算机上的脚本,然后将输出存储在本地计算机上

期望 ssh 到远程服务器的脚本:

#!/usr/bin/expect -f

set Timeout 2
        set IPaddress 10.118.137.78
        set Username "username"
        set Password "password"


        spawn ssh $Username@$IPaddress
        expect "ssword:"
        send "$Password\r"

在远程机器上运行并收集数据的脚本:

#!/bin/sh

for serveraddress in `cat list.out`
do
"seeisso $serveraddress | grep -E -i ' os |proddropdown'"
done >> getos

=== 不确定如何:1. 结合两者并获得结果。2 在期望脚本中,它不采用 \r 并返回换行符。

答案1

快速示例

#!/usr/bin/expect -f
set timeout -1
set Username "user"
set password "pass"
set ipaddress "host"
set script "script-name"

spawn $env(SHELL)
send -- "ssh $Username@$ipaddress $script\r"
expect "assword: "
send -- "$password\r"
send -- "exit\r"
expect eof

这将在远程端执行脚本。我没有过多地摆弄它,但完成后你必须按Ctrl+C 退出 expect。此时,我将为小型环境设置 ssh 密钥,并为更大的环境使用 puppet 或其他东西来管理它,然后为更大的环境设置单点登录,可能是 kerberos。

相关内容