リモートコマンド実行スクリプトに使用するコマンドシェルを期待

免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
このリンク: https://blog.csdn.net/weixin_44018338/article/details/102722263

期待期待-送信プロセスを対話するを使用して、インタラクティブな機能を自動化するために使用されるツールの一つです。

注意:

図1に示すように、スクリプトの実行方法は、次のような、bashシェルと同じではありません。expect example.sh

図2に示すように、パラメータを受信... $ 1、$ 2を使用して、スクリプトにbashシェルのパラメータを渡し、スクリプトの$ argv配列に格納された性能パラメータを期待する、スクリプトは、典型的には、変数に割り当てます。set 变量名 [lindex $argv 参数]

1

2

3

4

5

6

7

8

9

10

11

12

#!/usr/bin/expect

set ip [lindex $argv 0]

set password [lindex $argv 1]

set timeout 2

spawn telnet $ip

expect "*femto login:"

send "root\r"

expect "*Password:"

send "$password\r"

# 进入指定的机器后,就可执行相应的命令或者脚本

interact

#expect eof

注:終了した後、リモート端末の着陸場合は、書き込みexpect eofに。

3、スクリプトを実行します

1

expect autologin.sh 192.168.1.240 root

サーバー、FTP、LS、scpコマンドを再起動します。多くの場合、コマンドを使用して、リモートサーバへのログオンを達成するための必要性は、以下のような簡単なコマンドを、期待しています。インタラクティブなシーンが含まれ、パスワードを入力し、この時間は、巨大な演出コマンドが出てきた期待して、ここではより多くの古典的なスクリプトの実装は次のとおりです。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

#!/usr/bin/tclsh

package require Expect

set host_ip1 [lindex $argv 0]

set host_usr [lindex $argv 1]

set host_pwd [lindex $argv 2]

spawn ssh $host_usr@$host_ip1

set timeout 60

expect {

  -re "password" {send "$host_pwd\n"}

  -re "yes/no" {send "yes\n";exp_continue} # 有的时候输入几次密码来确认,exp_continue

}

expect "#"

send "ls /home/${host_user} | tee -a /tmp/ls.txt \r"

expect "#"

send "exit\r"

expect eof

概要

それは私がサポートスクリプトハウスをありがとう、この論文の内容は習得したり、作業するために私たちのすべてのための学習のいくつかの基準値を持っている願って、この記事のためにすべてです。あなたが詳細をお知りになりたい場合は、下記の関連リンクを参照してください。

また、記事に興味がある可能性があります。

おすすめ

転載: blog.csdn.net/weixin_44018338/article/details/102722263