CentOSはexpectを使用してスクリプトやコマンドをバッチでリモート実行します

CentOSはexpectを使用してスクリプトやコマンドをバッチでリモート実行します

サーバーへのファイルのアップロード、ソフトウェアのインストール、コマンドやスクリプトの実行、サービスの再起動、サーバーの再起動など、サーバーを一括して操作する必要がある場合があります。これらを一つ一つ手動で操作すると非常に面倒で、人的資源の無駄になります。

このとき、expect を使用してターゲット サーバーに指示を送信し、バッチ操作を実装できます。

次の例では、centos上のファイルを他のサービスプロバイダーにバッチコピーし、対応するコマンドを実行します。

1. CentOSにExpectをインストールする

yumインストール期待

2. 期待スクリプトcopyfilebatch.shを記述する

次のスクリプトは、イントラネット IP アドレス 192.168.0.102 ~ 192.168.0.112 を持つサーバーに rc.local ファイルをコピーします。コピーが成功したら、chmod コマンドを実行してサーバーをそれぞれ再起動します。

#!/usr/bin/expect -f
パスワードを設定する rootpassword

{i 102 に設定} {$i <= 112} {i を増分} {
  IPアドレスを「192.168.0.$i」に設定する
  「$ip」を置く


  ssh -o StrictHostKeyChecking=no $ip を実行します。
  タイムアウト3を設定
  「root@$ip のパスワード:」を期待します
  タイムアウト3を設定
  「$password\r」を送信
  タイムアウト3を設定
  「exit\r」を送信


  scp /home/install/rc.local root@$ip:/etc/rc.d/rc.local を起動します。
  タイムアウト3を設定
  「root@$ip のパスワード:」を期待します
  タイムアウト3を設定
  「$password\r」を送信
  タイムアウト3を設定
  「exit\r」を送信




  ssh root@$ip を生成する

  期待する {
  "*はい/いいえ" { "はい\r"を送信; exp_continue}
  "*password:" { "$password\r" を送信 }
  }
  期待する "#*"

  #実行するコマンドは「chmod +x /etc/rc.d/rc.local\r」を送信します
  「再起動\r」を送信
  「exit\r」を送信
  EOFを期待する
}

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • CentOS7 で .sh スクリプトを実行するときに表示される「構文エラー: 予期しないファイルの終わり」メッセージの解決方法
  • CentOS6で定期的にjarプログラムを実行するスクリプトをcrontabで実行する
  • CentOS 6.5 の設定 ssh キーフリーログインで pssh コマンドを実行する方法の説明
  • CentOS7でPHPスケジュールタスクを実行する方法
  • CentOS 7 で crontab を使用して定期的にタスクを実行する方法の詳細な説明
  • Centos7の起動時に/etc/rc.localが実行されない問題を解決する
  • CentOS で指定されたスクリプトを実行するスケジュールされたタスクを設定する方法

<<:  MySQL ユーザー権限管理の分析例

>>:  ユニアプリとミニプログラム(画像とテキスト)を下請けする方法を教えます

推薦する

Linux でファイルの権限 (所有権) を変更する

Linux と Unix はマルチユーザー オペレーティング システムであるため、ファイルの権限と所...

MySQLのREDOログ(リドゥログ)とロールバックログ(アンドゥログ)の詳しい説明

序文:前回の記事では、MySQL システムでよく使用されるログをいくつか説明しました。実は、トランザ...

Vueのトランジションとアニメーションの深い理解

1. DOM要素を挿入、更新、または削除するときに、適切な場合は要素にスタイルクラス名を追加します。...

CSS の高度な使い方(実戦で活用)

1. ul タグには、Mozilla ではデフォルトでパディング値がありますが、IE ではマージン値...

純粋な CSS 実装 (スクリプトなし) HTML コマンド スタイルのツールチップ テキスト プロンプト効果

実行プロセスを分析します。マウスをノードに移動して、ノードにツールチップ実装を開くための識別子 (...

JavaScriptのプリミティブ値とラッパーオブジェクトの詳細な紹介

目次序文文章プリミティブ型プリミティブ値ラッパーオブジェクト物体コンストラクタ通常機能(関数)プリミ...

Vueはログインジャンプを実装する

この記事では、ログインジャンプを実装するためのVueの具体的なコードを例として紹介します。具体的な内...

Quill エディタでカスタム HTML レコードを挿入する詳細な例

もう2020年です。飢えた人間は単純なテキストでは満足できなくなり、さまざまなスタイルの派手なテキス...

Ubuntu 12.04 でカーネルツリーを構築する実装プロセスの詳細な説明

まず使用しているカーネルのバージョンを確認してくださいlin@lin-仮想マシン:~$ uname ...

Docker コンテナの uid と gid の詳細な理解

デフォルトでは、コンテナ内のプロセスは root ユーザー権限で実行され、この root ユーザーは...

Win10 での MySQL 8.0.16 のインストールと設定のチュートリアル

1. MySQL 8.0.16を解凍する次の図に示すように、解凍後にdadaフォルダとmy.ini構...

Bootstrap 3.0 学習ノートボタンスタイル

この記事では主にボタンのスタイルについて説明します。 1. オプション2. サイズ3. 活動状況4....

アプレットにおけるwx.getUserProfileインターフェースの具体的な使用

最近、WeChatミニプログラムは、監査ミニプログラムのwx.loginおよびwx.getUserI...

SSM VUE Axios の詳細な説明

目次SQL ログを表示するにはどうすればいいですか? ? SpringMVC でのパラメータ渡しの説...