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

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

推薦する

VMware 仮想化 KVM のインストールと展開のチュートリアルの概要

仮想化1. 環境セントオス7.3 selinuxとファイアウォールを無効にする2. 仮想化環境の構成...

アイデアのパッケージ化とクラウドサービスへのアップロードにおけるプロジェクトプロセスの分析

1つ。まず、アイデアとしてパッケージ化する必要があります。私はSpringbootフレームワークプロ...

JavaScript の for ループと二重 for ループの詳細な説明

forループfor ループは配列の要素をループします。文法: for (初期化変数; 条件式; 繰り...

商品クエリ機能を実現するJavaScript

この記事の例では、商品検索機能を実現するためのJavaScriptの具体的なコードを参考までに共有し...

VMWare Linux MySQL 5.7.13 のインストールと設定のチュートリアル

この記事では、参考までにVMWare LinuxにMySQL 5.7.13をインストールするチュート...

iframeノードの初期化の問題に関する議論

今日、ふとリッチテキストエディタの制作原理を見直してみようと思いました。それで、彼は何も言わずにそれ...

MySQLの行ロックとテーブルロックの意味と違いの詳細な説明

1. はじめに行ロックとテーブルロックの違いは面接で頻繁に出てくるはずです。MySQL のロックにつ...

Web2.0製品と機能の簡単な紹介

<br />Web2.0とは何ですか? Web2.0にはソーシャルネットワーク製品とその...

Nginx tp3.2.3 404 問題の解決

最近、Apache を nginx に変更しました。TP プロジェクトを実行に移すと、404 エラー...

ハイパーリンクのWebデザイン原則

<br />関連記事: Web コンテンツ ページ作成のための 9 つの実用的なヒント、...

カルーセル効果を実現するjQueryプラグイン

毎日jQueryプラグイン - カルーセルチャートを実装するためのjQueryプラグイン。参考までに...

openlayers6 マップオーバーレイの一般的な 3 つの用途 (ポップアップウィンドウマーカーテキスト)

目次1. 前に書く2. ポップアップウィンドウを実装するためのオーバーレイ2.1 vueページのad...

Ubuntu 14 に Nginx-RTMP ストリーミング サーバーをインストールするチュートリアル

1. RTMP RTMP ストリーミング プロトコルは、Adobe が開発したリアルタイムのオーディ...

Vueはコンピュータカメラを呼び出して写真機能を実現します

この記事の例では、コンピュータカメラを呼び出して写真機能を実現するためのvueの具体的なコードを参考...

Node.js mysqlクライアントが認証プロトコルをサポートしていない問題を解決する

序文mysql モジュール (プロジェクト アドレスは https://github.com/mys...