如何使用文本文件中的变量通过ssh循环将命令传递给dd-wrt



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

完成此任务的另一种方法是创建一个循环并一次又一次地传递命令。但是我必须使用一个变量,因为文本文件中命令的数据会发生变化。

这是我到目前为止写的

#!/bin/expect -f

set passwordpassword

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

从我可以看到创建一个循环将是最简单的方法,但我可能是错的。说明说明"命令&我想要传递的变量"在一个单独的文本文件中,它需要读取/取每一行并将每一行插入循环中。除非有办法一次性把它们全部送过去。

#!/bin/expect -f

set passwordpassword

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

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

用法

command xxxxxxx
command xxxxxxx
command xxxxxxx
command xxxxxxx

感谢

我认为你应该这样做。

start.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 -- "$passwordr"
send -- "r"

和test.txt与您的命令列表。

最新更新