0

こんにちは、私の名前は Evan です。UNIX の初心者です :)

UNIX でのスクリプトについてお聞きしたいです。ここにケースがあります:

私は 4 つの UNIX サーバー (freeBSD OS を使用) を持っています。それらを「ゴリラ」と呼びましょう。1 つのゲートウェイ サーバー (同じく UNIX FreeBSD OS を使用)、これを「モンキー」と呼びましょう。ゴリラ サーバーにアクセスしてログインしたい場合は、パテを使用してモンキーにアクセスし、モンキーからssh接続を行ってゴリラサーバーに入ります。

場合は、ゴリラのサーバーの 4 分の 1 で、毎日、上司から apache エラー ログを取得するように求められています。

今回は、私は手動でやっています。putty to monkeys - ssh to gorrilas - scp コマンドを使用してエラー ログを monkey サーバーにコピーし、monkey サーバーから winscp でエラー ログを取得します。

問題は次のとおりです。この場合のスクリプトの作成方法は? すべてのサーバーのエラーログ名は同じ名前であるため、error_log の名前を自動的に変更する方法。「01_error.log」です。互いに置き換えられないように、手動で名前を変更する必要がありました。

誰かがこれで私を助けてくれることを願っています。皆様、ご協力と時間をありがとうございました。悪い英語でごめんなさい。:)

4

1 に答える 1

1

これを実現する最も簡単な方法は、Gorilla4 で自動化されたジョブをセットアップすることです。

最初の問題は、Gorilla4 と Monkey の間でパスワードなしの SSH アクセスをセットアップする必要があるため、物理的にパスワードを入力する人を必要としないことです。

「root」ユーザーでこれを行うことはできますが、強くお勧めしません。

代わりに、両方のホストでメンテナンス ユーザーを作成します。

$ useradd -m maintuser

次に、新しいユーザーに切り替えて、Gorilla4 で SSH キーを作成します。

$ ssh-keygen -t rsa -b 2048

プロンプトが表示されたら、デフォルトを受け入れます。次に、id_rsa.pub ファイルを Monkey の maintuser の ~/.ssh ディレクトリにコピーします。

これで、Gorilla4 の「maintuser」は、パスワードなしで Monkey に SSH で接続できます。

次に、「copy_log.sh」というスクリプトを作成できます。

#!/bin/bash
# copy_log.sh

log_path="/path/to/logdir"
log_name="01_error.log"
target_host="monkey"

echo "copying ${log_name} to ${target_host}..."
# note: $(hostname) below will add "Gorilla4" to the name of the file
scp ${log_path}/${log_name} maintuser@${target_host}:/path/to/dest/$(hostname)_${log_name} || {
    echo "Failed to scp file"
    exit 2
}
echo "completed successfully"

実行可能にします。

$ chmod +x copy_log.sh

これを Gorilla4 の maintuser の crontab に追加して、通常は自分で行う時間帯 (毎日午前 8 時など) に実行します。

00 08 * * * /path/to/copy_log.sh >> /some/log/dir/copy_log.out 2>&1

お役に立てれば; 他に何もなければ、それはあなたにたくさんのGoogleを提供します:)

于 2013-06-04T07:48:16.750 に答える