1

これまでのところ、ssh と組み合わせて、使用している dd-wrt ​​ルーターに単一のコマンドを渡すことを期待して、小さなスクリプトを作成することができました。これが完了したので、可能であれば、テキスト ファイルから 1 つだけではなく、ssh ログインを介して同じコマンドを数回渡したいと考えています。

これを実現するもう 1 つの方法は、ループを作成してコマンドを何度も渡すことです。ただし、テキスト ファイル内のコマンドのデータが変更されるため、変数を使用する必要があります。

これが私がこれまでに持っているものです

#!/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"

テキストファイルでは毎回同じコマンドで、変数だけが変わります。

test.txt

command xxxxxxx
command xxxxxxx
command xxxxxxx
command xxxxxxx

ありがとうございました

4

1 に答える 1

2

私はあなたがこのようなことをすべきだと思います。

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 -- "$password\r"
send -- "\r"

コマンドのリストを含むtest.txt。それぞれ別の行に。

于 2013-04-05T11:00:58.583 に答える