到目前为止,我已经能够使用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与您的命令列表。