シェル・プログラミング(C)

1.配信システムを導入します

        今日では、主に負荷分散を使用して大企業の、そして時にはので、いくつかのプログラムの一部を変更したい、またはいくつかのバグが修正されるように、すぐにコードを更新、などは、ほんの数サーバーならば、それは良い変更プログラムのコピーを持っているために、非常に簡単です過去、またはrsyncのリモートプッシュした後、または何のことができます。NFS共有をオンラインで、しかし、何十何百ものがある場合は、そのアプローチは、あなたがバルク分散タスクに期待することができ、あまりにも面倒だろう。

  • 期待:ソフトウェアスイートの自動インタラクティブ機能、Tclのに基づいてスクリプト言語は、単純な構文を持っています。

  • 特徴:自動リモートマシンにログインすると、自動的にコマンドを実行し、組み合わせて、およびシェルスクリプトは、完全に自動化することができます。

  • 注:同じ自動ログインとコマンドの自動リモート実行が非キー認証パスワードを使用する場合に達成することができます。あなたは鍵認証を使用することはできません。しかし、我々は他の方法を持っていません。だから、この時点でのみログインして互いに機械アカウントとパスワードを知っているし、リモートコマンドによって達成することができるスクリプトを期待しています。

リモートログインスクリプト2.expect

1.コマンド期待するソフ​​トウェアスイートをインストールします:yumの-yを期待インストール

2.完全なリモートログインし、スクリプトの実行

ホスト:192.168.2.168

リモートエンド:192.168.2.188  

(1)ホスト側では、は/ usr / local / sbinに/に、スクリプトを作成することを期待; VIM 1.expect

(2)SSH 192.168.2.168とリモートエンドに直接ログインします

[ルート@のying01 sbinの]#sshを192.168.2.188

パスワードを[email protected]'s:

最終ログイン:192.168.2.168から木曜8月2日午前8時28分02秒2018

[ルート@ ying02〜]#ログアウト

192.168.2.188への接続が閉じました。

(3)自動的にリモートエンドに接続する1.expect実行許可を与えます。

[ルート@のying01 sbinの]#./ 1.expect

-bash:./:ディレクトリがあります

[root@ying01 sbin]# ./1.expect

-bash: ./1.expect: 权限不够

[root@ying01 sbin]# chmod a+x 1.expect

[root@ying01 sbin]# ./1.expect

spawn ssh [email protected]

[email protected]'s password:

Last login: Thu Aug 2 15:22:34 2018 from 192.168.2.168

为了让远程登录时候出现提示,可以清空/root/.ssh/known_hosts目录;然后执行1.except,可以看到脚本,自动执行

清空密匙:

自动执行了:

3.

3. expect脚本远程执行命令

在主机端建立2.expect,查看其脚本

同样需要授予2.expect 访问权限:chmod a+x 2.expect

执行2.expect: #./2.expect 

在远程端查看执行的情况:

4. expect脚本传递参数

expect脚本可以接受从bash传递过来的参数.可以使用[lindex $argv n]获得,n从0开始,分别表示第一个,第二个,第三个….参数

给予可执行权限,并定义参数后执行脚本

#chmod a+x 3.expect

执行命令及结果:

 

 

 

 

 

おすすめ

転載: blog.csdn.net/weixin_40876986/article/details/92851436