1

到目前为止,我已经能够使用 ssh 创建一个小脚本,并结合期望将单个命令传递给我正在使用的 dd-wrt ​​路由器。现在这已经完成了,如果可能的话,我希望通过 ssh 登录多次传递相同的命令,而不是只从文本文件中传递一个命令。

完成此操作的另一种方法是创建一个循环并一遍又一遍地传递命令。我将不得不使用一个变量,因为文本文件中命令的数据发生了变化。

这是我到目前为止所拥有的

#!/bin/expect -f

设置密码密码

    spawn ssh -l root x.x.x.x -p "command"
    expect "*password:*"
    send -- "$password\r"
    send -- "\r"

从我所见,创建循环将是最简单的方法,但我可能错了。请注意,我要通过的“命令和变量”位于单独的文本文件中,并且它需要读取/获取每一行并将每一行插入循环中。除非有办法一次将它们全部发送出去。

#!/bin/expect -f

设置密码密码

    spawn ssh -l root x.x.x.x -p "command Variable" <-- Command to be passed through
    expect "*password:*"
    send -- "$password\r"
    send -- "\r"

每次在文本文件中都是相同的命令,只是变量发生了变化。

测试.txt

command xxxxxxx
command xxxxxxx
command xxxxxxx
command xxxxxxx

谢谢

4

1 回答 1

2

我认为你应该做这样的事情。

启动.sh

#!/bin/bash
 password="your_password"
 cat test.txt|while read line
 do
   for i in $line
     do
       ssh.exp $i $password
     done
 done

ssh.exp

#!/usr/bin/expect
set command [lrange $argv 0 0] 
set password [lrange $argv 1 1] 
spawn ssh -l root x.x.x.x -p "$command"
expect "*password:*"
send -- "$password\r"
send -- "\r"

并带有您的命令列表的 test.txt。每个在不同的行。

于 2013-04-05T11:00:58.583 回答