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 ユーザー権限管理の分析例

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

推薦する

bash スクリプトで ssh/scp コマンドにパスワードを渡す方法の詳細な説明

SSHPASSをインストールする最新のオペレーティング システムでは、sshpass パッケージはデ...

Docker nginx + https サブドメイン設定の詳細なチュートリアル

今日はたまたま友人のサーバーの移転を手伝うことになり、サーバーの基本的な設備の設定を行ったのですが、...

vue3.0共通コンポーネントの自動インポート方法の例

1. 前提条件インポートには require.context メソッドを使用します。vite で作成...

nginx ウェブサイト サービスのアンチホットリンクを設定する方法 (推奨)

1. ホットリンクの原則1.1 Webページの準備Web ソース ホスト (192.168.153...

MySQL はカスタムシーケンスを使用して row_number 関数を実装します (詳細な手順)

いくつかの記事を読んだ後、ようやく MySQL で row_number() ソートを実装する方法が...

よくある CSS エラーと解決策

コードをコピーコードは次のとおりです。 IE6 と FF の違い: background:orang...

チャットバブル効果を実現するCSS

1. レンダリングJD効果シミュレーション効果 2. 原則高さと幅が0のボックスを用意しますこのボ...

フレックスレイアウトにおける画像変形の解決策の詳細な説明

フレックス レイアウトは現在よく使用されるレイアウト方法ですが、場合によっては小さな問題が発生するこ...

vue プロジェクトで rem を使用して px を置き換える例

目次道具プラグインをインストールするプロジェクトのルートディレクトリに.postcssrc.jsファ...

Vue3 の組み合わせ API における setup、ref、reactive の完全な使用方法

1. セットアップを始める次のコード関数を簡単に紹介します。 ref 関数を使用して変数の変更を監視...

MySql ストアド プロシージャ パラメータの初歩的な使用法の詳細な説明

パラメータでのストアドプロシージャの使用IN パラメータは、プロシージャに情報を渡すためにのみ使用さ...

MySQL関数の包括的な概要

目次1. MySQLでよく使われる文字列関数2. 数値関数3. 日付と時刻の機能4. プロセス機能5...