私はジュニア システム管理者です。この質問をする理由は、スクリプトに精通した上級システム管理者がここにいないからです。上級管理者は本社にいて、このようなことには忙しすぎます。
私のシナリオはこうです。アプリケーションを展開するために、3 つのスクリプトを頻繁に実行する必要があります。スクリプトは上級システム管理者によって作成されました。通常、スクリプトはスムーズに実行され、エラーも発生しません。ただし、入力については監視する必要があります。:(
これらのスクリプトの一部には、はいまたはいいえを入力する必要がある部分があります。前の部分が失敗しない限り、答えは変わりません。その場合はいいえを選択し、「ビルドに失敗しました」と表示されます。
私が運営しているのは基本的に以下の部分です:
1 - デプロイメントサーバーにSSH接続する
2 - ファイル内の小さな文字列を編集する(サーバー固有の情報を指定する)
3 - スクリプト A を実行します。これは基本的に、デプロイメントからターゲット サーバーにすべてのファイルを scp します。ここで入力する必要があるのは、最後にある入力だけです。ターゲットから正しい日付が表示されているかどうかを尋ねられます。はいと答えると、ビルドは成功します。
4 - デプロイメント サーバーからもスクリプト B を実行します。これには次のような特定の情報が必要です。
./scriptB XYZ で、X、Y、Z はターゲット サーバーの情報に応じて変化します。
スクリプト B には、「これを実行しますか、それともこれをドロップしますか」などの質問がいくつかあり、回答は同じままです。また、ANT のバグが発生する場合もあり、スクリプトが続行されるまで「1」を押すように要求されます。
5 - スクリプト B と非常によく似たスクリプト C を実行します。ただし、ある時点で特定のステップを実行しようとするため、終了するには手動で「control c」を押す必要があります。
私はスクリプト初心者ですが、これをどうやって行うのか教えてくれたり、アイデアをくれたりしたら嬉しいです。expect を使えるかもしれないと思いました。
さらに良いのは、Windows ラップトップで EXE をクリックするだけで、すべてを実行できるとしたらどうでしょう。それは可能なのでしょうか?
答え1
次の 2 つの点に注意する必要があるようです。
- 古いスクリプトを編集して、一部のチェックを自動的に実行するか (たとえば、タイムスタンプのチェック)、プロンプトを削除して (
read
コマンドを探す)、デフォルトで応答します。 - まさにこのタスクのために設計されたツール、例えばアンシブル。
何か新しいことを学び、システム管理者としての履歴書を改善したい場合は、2 番目のオプションを検討することをお勧めしますが、短期的には 1 番目のオプションでも問題なく機能するはずです。
私が述べた最初のオプションから始める場合は、スクリプト A でプロンプトが必要ないようにします。関数を使用して現在の日付を取得し、自動的にチェックを実行します。コピーしたファイルから比較する日付の場合は、またはなどのツールを使用してその情報を取得できるdate
はずです。find
ls
exit
スクリプト C を実行すると、通常 を押す場所にコマンドを入力するのは簡単ですCtrlC。
何よりも重要でないボックスでこれをテストすることを忘れないでください。古いスクリプトをハックしている間に本番環境の設定を台無しにしたくないでしょう...