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/Docker で System.Drawing.Common を使用する

序文プロジェクトを .net core に移行した後、 System.Drawing.Commonコ...

Vue で配列をクリアするいくつかの方法 (要約)

目次1. はじめに2. データを消去するいくつかの方法2.1 ref() の使用2.2 スライスの使...

CentOS 7 で grub パスワードと単一ユーザー ログインを設定するサンプル コード

Centos7 と Centos6 では、GRUB パスワードの設定手順に大きな違いがあります。これ...

Node-Redを使用してMySQLデータベースに接続する方法

Node-red をデータベース (mysql) に接続するには、まずコンピューターに MySQL ...

Linux で独自の Nexus プライベート サーバーを構築する方法

この記事では、Linuxサーバー上でDockerを使用してNexusプライベートサーバーを構築する方...

MySQL 5.7のワンクリックインストールとパスワードポリシーの変更方法

1.Mysqlスクリプトのワンクリックインストール [root@uat01 ~]# cat Inst...

Centos7でポートを開く方法

CentOS7 のデフォルトのファイアウォールは iptables ではなく、firewalle で...

Truncate Table の使用法の説明

テーブルを切り捨てる個々の行の削除をログに記録せずに、テーブル内のすべての行を削除します。文法 テー...

docker での psql データベースのバックアップとリカバリの詳細な説明

1. DockerでのPostgresデータベースのバックアップ注文: docker exec it...

RedHat 6.5 に MySQL 5.7 をインストールするための詳細なチュートリアル

RedHat6.5インストールMySQL5.7チュートリアル共有、参考までに、具体的な内容は次のとお...

MySQL の 10 進数データ型の小数点埋め込み問題の詳細な説明

序文開発プロセスでは、10 進データ型がよく使用されます。 MySQL では、小数点は正確なデータ型...

JS でパブリッシュ サブスクライブ モデルを作成する

目次1. シーン紹介2 コードの最適化2.1 ファンを増やす問題を解決する2.2 作品追加の問題を解...

ECMAScriptにおけるプリミティブ値と参照値の詳しい説明

目次序文動的プロパティとは何ですか?値のコピー値の種類を決定する要約する序文これは JavaScri...

Vueは複数のカウントダウンを同時に設定する機能を実装しています

この記事の例では、複数のカウントダウンを同時に設定するためのVueの具体的なコードを参考までに共有し...

MySQL 8.0.15 のインストールと設定方法のグラフィックチュートリアル (Win10 Home バージョン 64)

超初心者の私は、MySQL を学び始めたばかりで、インストール プロセス中に多くの問題に遭遇しました...