ssh接続でのログ監視について
初めまして
掲題の件について質問いたします。
zabbixバージョン:3.4.4 Revision 74338
監視対象:HP P2000 G3 FC
【アイテムの設定】
タイプ:SSHエージェント
キー:ssh.run
ホストインターフェース:IPアドレス:22
認証方式:パスワード
ユーザー名:入力済
パスワード:入力済
実行するスクリプト:show events
データ型:ログ
更新間隔:30s
Cannot read data from SSH serverとなり、データの取得ができない
他のPCからtera termにてsshで接続して、show eventsを実行できたので、監視対象へのssh接続はできると考えています。
show eventsを実行したときにとれるログをzabbixで監視したいと考えております。
よろしくお願いいたします。
TNK - 投稿数: 4769
データが取得できないとのことですが、何らかのメッセージがログ
に出力されていないかも確認してみてください。
例えば、sshでの認証処理など接続にかかる時間も含めて、その値
を取得する処理にどのくらいの時間がかかっていますか?
デフォルトの設定だと3秒でタイムアウトしてしまいますが、3秒以
上かかるような処理ではありませんか?
KN - 投稿数: 33
下記の場所のファイルを見てみましたが、新たに情報は得られませんでした。
/var/log/zabbix/zabbix_server.log
24149:20180614:110526.587 error reason for "P2000:ssh.run[test,192.168.100.10,22]" changed: Cannot read data from SSH server
3秒タイムアウトは、あるかもしれませんが、どこで変更できるのかわかりません。
どこで変更すればよろしいでしょうか?
TNK - 投稿数: 4769
手動で接続してコマンドを実行した時にどのくらいの時間がかかっ
ているのでしょうか?
sshの場合であれば、Zabbixサーバー側のTimeoutの設定値を変更す
れば対応できると思います。
zabbix_server.conf内のTimeoutの設定を行ってみてください。
基本的には、Zabbixサーバーのサービスの再起動を行うと確実に設
定変更が反映されます。
KN - 投稿数: 33
Timeout時間を30sにしてみましたが、変わらずCannot read data from SSH serverでした。
他のCentOSをターゲットに
実行するスクリプト:hostnameにしてみたところ取れました。
しかし、P2000からは、データをとれません。
P2000にsshでログインしたときに、「ls」などのコマンドが使えず、clear*とかshow*など決まったコマンドしか受け付けてくれないようですが、関係ありますか?
TNK - 投稿数: 4769
関係あります。
P2000上では、Linuxが動いているのではなく、ストレージ管理用の
別のOSが起動されているのだと思います。
sshで接続できるとのことですが、具体的にどのような手順でログ
インしているのかをお教えください。
IPアドレスなどはマスキングして頂いて構いませんが、どのような
プロンプトが表示されるなど、どのような応答が帰ってくるのかの
詳細をお教えください。
1回は、Zabbixサーバーから手動でsshコマンドで接続してみてくだ
さい。
minayan - 投稿数: 44
横から失礼します。
そもそも、zabbixサーバーからsshコマンドでP2000へ問題なくログインはできますか。
例)詳細ログを出力
ssh -v ユーザ名@IPアドレス
で正常にログインできて、show eventsが実行できるか。
切り分けないと、何が問題かわかりません。
KN - 投稿数: 33
zabbixServerからsshコマンドでP2000へ問題なくログインでき、コマンド入力できます。
認識の違いが無いように下記にログを記載致します(IP等消しています)
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 58: Applying options for *
debug1: Connecting to IP [IP] port 22.
debug1: Connection established.
debug1: key_load_public: No such file or directory
debug1: identity file /home/apluser/.ssh/id_rsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/apluser/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/apluser/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/apluser/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/apluser/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/apluser/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/apluser/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/apluser/.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_7.4
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.2
debug1: match: OpenSSH_5.2 pat OpenSSH_5* compat 0x0c000000
debug1: Authenticating to IP:22 as 'UID'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: diffie-hellman-group-exchange-sha256
debug1: kex: host key algorithm: ssh-rsa
debug1: kex: server->client cipher: aes128-ctr MAC: umac-64@openssh.com compression: none
debug1: kex: client->server cipher: aes128-ctr MAC: umac-64@openssh.com compression: none
debug1: kex: diffie-hellman-group-exchange-sha256 need=16 dh_need=16
debug1: kex: diffie-hellman-group-exchange-sha256 need=16 dh_need=16
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<3072<8192) sent
debug1: got SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: got SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: ssh-rsa SHA256:*****
debug1: Host 'IP' is known and matches the RSA host key.
debug1: Found key in /home/apluser/.ssh/known_hosts:1
debug1: rekey after 4294967296 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: rekey after 4294967296 blocks
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug1: Next authentication method: publickey
debug1: Trying private key: /home/user/.ssh/id_rsa
debug1: Trying private key: /home/user/.ssh/id_dsa
debug1: Trying private key: /home/user/.ssh/id_ecdsa
debug1: Trying private key: /home/user/.ssh/id_ed25519
debug1: Next authentication method: keyboard-interactive
Password:
debug1: Authentication succeeded (keyboard-interactive).
Authenticated to IP ([IP]:22).
debug1: channel 0: new [client-session]
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug1: pledge: network
debug1: Sending environment.
debug1: Sending env XMODIFIERS = @im=ibus
debug1: Sending env LANG = ja_JP.UTF-8
HP StorageWorks MSA Storage P2000 G3 FC
System Name: P2000G3FC1
System Location: Uninitialized Location
Version: TS240P001
# show events
2018-06-20 07:14:51 [206] #B4032: P2000 G3 FC アレイSN...
minayan - 投稿数: 44
ログ取り、お手間をおかけしました。
Zabbixサーバー上のsshコマンドからP200への接続はうまくいくのですね。
となると、考えられるのはZabbixサーバーの実行ファイルで使われるlibssh2ライブラリで使用可能な鍵交換アルゴリズムとP2000の持つ鍵交換アルゴリズムが合ってない可能性があります。
OpenSSH 7.2から古い鍵交換アルゴリズムを持つ接続先に繋ぐとチェックで弾かれます。(P2000はOpenSSH 5.2ですので古い鍵交換アルゴリズムを含みます)
zabbix_server.confのDebugLevelを5にして、ssh.run実行時の詳細ログが出れば、そこに鍵交換絡みのエラーが出るかもしれません。
ただ、DebugLevel=5にすると大量のログが出力されるので、ログが取れたらDebugLevelをもとに戻してください。
見当違いで鍵交換系のトラブルでない可能性もあるので、念の為下記情報を教えてください。
1)ZabbixサーバーのOSのバージョンは何でしょうか。
2)show eventsの実行には何秒くらいかかるのでしょうか。
minayan - 投稿数: 44
もしかしたら、show eventsで出力されるログが大きく時間がかかってエラーも考えられます。
単純に"show events"を実行すると、過去から現在まですべてのログが表示されるように見受けられます。
切り分けのために"show events last 2"に変えてみてどうなるか確認できますでしょうか。
-----------------------------------------------------------------------------------------------------------------------------
HP P2000 G3のコマンドリファレンスを見ました。
こちらのURLで
http://h50146.www5.hpe.com/lib/products/storage/manual/array/500912-193_...
176ページに説明がありますが、show eventsはオプションで絞れます。
以下抜粋です。
例
最後の2つのイベン ト を表示し ます。
# show events last 2
最後の3つの情報以外のイベン ト を表示し ます。
# show events last 3 error
2009年4月30日午後11:59:00から、 2009年5月2日午前11:59:00までのすべてのイベン ト を表示し ます。
# show events from 043009235900 to 050209115900
コン ト ローラー Aによ って記録されたある範囲のイベン ト を表示し ます。
# show events from-event a100 to-event a123
KN - 投稿数: 33
お世話になっております。
コマンドリファレンスまで参照いただいてありがとうございます。
show events last 2にしてみましたが、状況変わらずでした。
お手数おかけ致します。
logLevel=5にして実行してみました。
下記がログになります。
1789:20180622:165204.711 snmp:[oid:'interfaces.ifTable.ifEntry.ifInOctets.1' community:'{$SNMP_COMMUNITY}' oid_type:0]
1789:20180622:165204.711 snmpv3:[securityname:'' authpassphrase:'' privpassphrase:'']
1789:20180622:165204.712 snmpv3:[contextname:'' securitylevel:0 authprotocol:0 privprotocol:0]
1789:20180622:165204.712 itemid:44860 hostid:10358 key:'ssh.run[clear,192.168.100.10,22]'
1789:20180622:165204.712 type:13 value_type:4
1789:20180622:165204.712 interfaceid:103 port:''
1789:20180622:165204.712 state:1 error:'Cannot read data from SSH server'
1789:20180622:165204.712 flags:0 status:0
1789:20180622:165204.712 valuemapid:0
1789:20180622:165204.712 lastlogsize:0 mtime:0
1789:20180622:165204.712 delay:'30s' nextcheck:1529654260 lastclock:1529653691
1789:20180622:165204.712 data_expected_from:1529653481
1789:20180622:165204.712 history:1
1789:20180622:165204.712 poller_type:0 location:1
1789:20180622:165204.712 inventory_link:0
1789:20180622:165204.712 unreachable:0 schedulable:1
1789:20180622:165204.712 ssh:[username:'**' password:'**' authtype:0 params:'show events last 2']
1789:20180622:165204.712 ssh:[publickey:'' privatekey:'']
1789:20180622:165204.712 itemid:44888 hostid:10358 key:'snmptrap[.*]'
1789:20180622:165204.712 type:17 value_type:2
1789:20180622:165204.712 interfaceid:103 port:''
1789:20180622:165204.712 state:0 error:''
1789:20180622:165204.712 flags:0 status:1
1789:20180622:165204.712 valuemapid:0
1789:20180622:165204.712 lastlogsize:0 mtime:0
1789:20180622:165204.712 delay:'0' nextcheck:0 lastclock:0
1789:20180622:165204.712 data_expected_from:1529650237
1789:20180622:165204.712 history:1
1789:20180622:165204.712 poller_type:255 location:0
1789:20180622:165204.712 inventory_link:0
1789:20180622:165204.712 unreachable:0 schedulable:1
KN - 投稿数: 33
1)ZabbixサーバーのOSのバージョンは何でしょうか。
CentOS Linux release 7.4.1708 (Core)になります
2)show eventsの実行には何秒くらいかかるのでしょうか。
体感では1秒以内に返ってきています。
minayan - 投稿数: 44
> 体感では1秒以内に返ってきています。
ログサイズの問題ではないですね。
では実行するスクリプトを
"show events last 2"から"exit"に変えるとどうなるでしょうか。
※パラメータが無い一番単純なコマンドでどうなるかの確認です
これで問題なければ、実行するスクリプトを以下のように2行記載すると問題なく動くかもしれません。
show events
exit
KN - 投稿数: 33
実行するスクリプトをexitのみに致しましたが、現象変わらず、Cannot read data from SSH serverのままでした。
minayan - 投稿数: 44
当方でも同様の症状が起きないか確認したところ
1)D-Link製ネットワークスイッチ(sh time):エラー「Cannot request a shell」(※Cannot read data from SSH serverの一歩手前のエラー)
2)NetAppストレージ(dfを実行):問題なし
3)RHEL 5.11(lsを実行):問題なし
4)Apresia製L2スイッチ(sh hardware):ブランク戻り(エラーではない。本来は電源やファンの状態が戻る)
という結果になりました。
1や4はCLI(コンソール)で操作するのが前提(>や#や$等の入力を促すプロンプトを確認しながら)で、Zabbixのssh.runだとうまくいきません。
Zabbixの場合はlibssh2というライブラリでsshコマンド実行するので、「>#$」等の入力を促すプロンプトを確認しながら実行しているのかまではわかりませんが、確認していないように見えます。
実際の動作状態を見ていないのでなんとも言えませんが、HP P2000 G3もCLI(SSHコマンドやTeraTerm)の操作ではうまくいくが、ssh.runではNGと動きが似ています。
当方では1や4の設定変更をexpectコマンドで、sshのログイン→コマンド実行→ログオフまでをスクリプト定義し動かしています。
HP P2000 G3のshow eventsについても、スクリプト定義してexpectコマンドで実行する必要がありそうです。
minayan - 投稿数: 44
expectでsshコマンドを実行するサンプルです(ZabbixからだとUserParameterかリモートコマンドで実行となります)
Linux上のCLIで試すことができます。
例)
ファイル名ssh-script.shで保存し、chmod +x ./ssh-script.shで実行権限をつけます
./ssh-script.shで実行すると、show eventsの内容が表示されます
---------------------------------------------------------------
#!/usr/local/bin/expect
set timeout 5
spawn ssh -l hoge 192.168.x.x
expect "Are you sure you want to continue connecting (yes/no)?" {
send "yes\r"
expect "password:"
send "fuga\r"
} "password:" {
send "fuga\r"
}
expect "# "
send "show events\r"
expect "# "
send "exit\r"
---------------------------------------------------------------
最初の#!/usr/local/bin/expectは環境により異なります、whereis expectでexpectのパスを調べてください
hogeとfugaは実際のID/PWにしてください
set timeoutは5秒でタイムアウト
expectでプロンプト表示を待って、sendでキー操作[コマンド+改行コード]を送ります
---------------------------------------------------------------
expectコマンドが導入されていない場合は別途導入が必要です
KN - 投稿数: 33
expectで実行することができました。
このコマンドをzabbixで実行し、結果をもらうためには、どういう設定をしたら良いか分かりません。
申し訳ございませんが、ご教授願います。
minayan - 投稿数: 44
下記の設定でできるかと
パスやファイル名、定義内容は適宜変更してください
※Zabbixサーバーへ設定を入れることを前提としています
1)Zabbixサーバーのzabbix_agent.confの変更
EnableRemoteCommands=1とします
Zabbixエージェントの再起動が必要です
2)シェルスクリプトの配置(zabbixサーバーへの配置を想定)
スクリプト格納先:/script/ssh-test.sh
※以下のコマンドは、rootで実行するか、sudoで実行してください
2-1)スクリプトを格納するフォルダを作成:mkdir /script
2-2)作成したフォルダへスクリプトを格納し、ownerをzabbixとする(chown zabbix /script/ssh-test.sh)
2-3)実行権限を付与:chmod +x /script/ssh-test.sh
2-4)パーミッションの変更:chmod 750 /script/ssh-test.sh (※匿名ユーザはスクリプトを読めないようにする)
3)アイテムの定義
例です。(Zabbixサーバーホストへ登録になるかと)
名前:show events HP P2000 via ssh(expect)
タイプ:Zabbixエージェント(アクティブ)
キー:system.run[/script/ssh-test.sh]
データ型:テキスト
更新間隔:1m (必要に応じて変更)
ヒストリ保存期間:365d (必要に応じて変更)
TNK - 投稿数: 4769
Zabbixサーバー上で外部スクリプトを実行してその結果を監視する
のであれば、以下のような設定を行います。
まず、zabbix_server.conf内のExternalScriptsの設定を確認しま
す。
デフォルトであれば、以下のような設定になっていると思います。
ExternalScripts=/usr/lib/zabbix/externalscripts
そして作成されたスクリプトがssh-script.shという名前だったと
して、そのファイルをExternalScriptsで指定されているディレク
トリにコピーします。
実行権限を付与しておくことを忘れないようにしてください。
あとは、HP P2000 G3 FC用のテンプレートかホスト自体に以下のよ
うなアイテムを作成してください。
タイプ :外部チェック
キー :ssh-script.sh
データ型:テキスト
名前や間隔は要件に合わせて設定してください。
KN - 投稿数: 33
ssh-script.shを実行してみたところ、下記の状態になりました。
Timeout while executing a shell script.
タイムアウト時間を延ばしてみても状況が変わらないです。
また、同じスクリプトをZabbixサーバーで実行すると動作いたします。
minayan - 投稿数: 44
アイテムの定義とスクリプトは、Zabbixサーバーに設定したのでしょうか?
また、アイテムのタイプがZabbixエージェント(アクティブ)でしたら、zabbix_agentd.confのTimeoutを30にしてみてください。
変更後、zabbix agentの再起動が必要です。
TNK - 投稿数: 4769
どこで実行しようとされているのですか?
HP P2000 G3にはZabbixエージェントも動いてないでしょうし
Zabbixのsshのアクセス機能では正常にアクセスできないよう
ですので、Zabbixサーバー上での実行が必要でしょう。
どこにどのように設定してうまく動かないのか、より詳細に
お教えください。
KN - 投稿数: 33
遅くなり申し訳ございません。
Zabbix serverにて下記の場所のファイルを実行しています。
/script/ssh-test.sh
また、再起動については、zabbix_agentd.confのTimeoutを30に設定してから、念のためサーバーの再起動も致しました。
minayan - 投稿数: 44
ssh-test.shの実行結果を見ないとわからないですね。
system.run[/script/ssh-test.sh | tee /script/ssh-test.log]に変えて出力されたssh-test.logで何かわかるかもしれません。
※ファイル出力するために、/scriptフォルダの所有者をzabbixにしてください
KN - 投稿数: 33
ssh-test.logは生成されませんでした。
フォルダの権限は問題ないと思います。
minayan - 投稿数: 44
何度もお手数をおかけします。
system.run[/script/ssh-test.sh > /script/ssh-test.log]
でやってみていただけますでしょうか。
minayan - 投稿数: 44
ssh-test.shのspawnの行を下記のようにしてみてください。
変更前:spawn ssh -l UID IP
変更後:spawn ssh -l UID IP -o StrictHostKeyChecking=no -o LogLevel=quiet
まだ実行ログが見れていないので何とも言えませんが、これで上手くいく可能性が高いです。
set timeout 10ですが、手動実行でtime ./ssh-test.shとしてみて30秒以内で実行完了であれば、5に戻してください。
※手動実行で30秒を超えるのであれば、cronで定期実行して実行結果をファイル出力し、そのファイルをZabbixで取得する方法があります。
KN - 投稿数: 33
お世話になっております。
キー:system.run[/script/ssh-test.sh > /script/ssh-test.log]
上記の設定をしておりますが、Timeout while executing a shell script.になってしまい、ログも出力されません。
minayan - 投稿数: 44
>ssh-test.shのspawnの行を下記のようにしてみてください。
>変更前:spawn ssh -l UID IP
>変更後:spawn ssh -l UID IP -o StrictHostKeyChecking=no -o LogLevel=quiet
>まだ実行ログが見れていないので何とも言えませんが、これで上手くいく可能性が高いです。
>set timeout 10ですが、手動実行でtime ./ssh-test.shとしてみて30秒以内で実行完了であれば、5に戻してください。
>※手動実行で30秒を超えるのであれば、cronで定期実行して実行結果をファイル出力し、そのファイルをZabbixで取得する方法があります。
上記は試していただけましたでしょうか。
minayan - 投稿数: 44
Zabbixエージェント起動でのタイムアウト回避のためcronで実行したほうがいいかもしれません。
rootユーザーでcronを設定(※本当は別ユーザで登録が望ましいですが、今は動作優先で)
1分間隔で実行されます。
% crontab -e
* * * * * /script/ssh-test.sh > /script/ssh-test-cron.log <=この行を追記
で出力されたssh-test-cron.logをsystem.run[cat /script/ssh-test-cron.log]で取得します。
5分間隔の場合:*/5 * * * * /script/ssh-test.sh > /script/ssh-test-cron.log
KN - 投稿数: 33
spawn ssh -l UID IP -o StrictHostKeyChecking=no -o LogLevel=quietは試しましたが、うまく動いていないようです。
cronで設定は、まだ実施できておりません。
申し訳ございませんが、明日は手が付けられそうにありません。
KN - 投稿数: 33
大変遅くなり申し訳ございません。
cronにて1分間隔で取得するように設定致しました。
そうすると、問題が複数出てきました。
log[/script/sshtestcron]で取得したところ、zabbixの最新データから見ると、最初の1行目しかとれませんでした。
また、sshのパスワード入力画面で20秒ぐらい?止まっているようで、自分がファイルを開いた時に度々下記の2行のみ表示されていることがありました。
spawn ssh -l administrator 192.168.100.10 -o StrictHostKeyChecking=no -o LogLevel=quiet
Password:
本来、下記のようなファイルになることを想定しています。
spawn ssh -l administrator 192.168.100.10 -o StrictHostKeyChecking=no -o LogLevel=quiet
Password:
HP StorageWorks MSA Storage P2000 G3 FC
System Name: P2000G3FC1
System Location: Uninitialized Location
Version: TS240P001
# show events last 2
2018-07-09 01:06:03 [207] #B4053: P2000 G3 FC アレイSN#00C0FF1514DFコントローラー B 情報 仮想ディスクのスクラブジョブが失敗しました。 エラーは見つかりませんでした。 (仮想ディスク: vd01、SN: 00c0ff1514df00003dc9365000000000)
2018-07-08 09:25:08 [206] #B4052: P2000 G3 FC アレイSN#00C0FF1514DFコントローラー B 情報 仮想ディスクのスクラブジョブが開始されました。 (仮想ディスク: vd01、SN: 00c0ff1514df00003dc9365000000000)
Success: コマンドは正常に完了しました。 (2018-07-09 15:37:43)
#
minayan - 投稿数: 44
※※※こちらは暫定対応なので、次の返信を根本対処としてください。※※※
とりあえずZabbixと連携できたので、あともう少しと思います。
> log[/script/sshtestcron]で取得したところ、zabbixの最新データから見ると、最初の1行目しかとれませんでした。
log[/script/sshtestcron]の更新間隔とcronの実行間隔がかぶって、cronで実行途中のファイルを読み込んでいるようですね。
かぶりの解消ができるか、いったんlog[/script/sshtestcron]の更新間隔を5分にしてどうなるか様子を見てください。
ssh-test.shのset timeoutは何秒になっていますでしょうか?
10秒にしてあるのでしたら、5秒に戻してみてください。
minayan - 投稿数: 44
更新間隔を変えるだけでは、かぶりの根本解決は難しいです。
1つシェルスクリプトをかませて、そこからexpectを実行してかぶりを解消します。
今のcron設定を以下のように書き換えていただいて
* * * * * /script/ssh-exec.sh
新たに/script配下にssh-exec.shを以下内容で作成
#!/bin/sh
cd /script
./ssh-test.sh > ./tmp.txt
cp ./tmp.txt ./sshtestcron
これで実行途中のsshtestcronファイルを読むことはなくなります。
KN - 投稿数: 33
ファイル作成中の読込対応をしました。
本スレッドから外れるかもしれませんが、
毎回必要ないデータspawn ssh -l ~~~~などが入ってしまうのでsedなどを使いイベントのみを抽出しようと思っています。
仮にうまく抽出できたとしても、スキャンのたびに同じデータを取得してしまうと思うのですが、同じデータならば排除するなどの処理は可能ですか?
当初の目的はデータの取得なので、閉じたほうが良いですか?
minayan - 投稿数: 44
前回取得値と今回取得値が同じであれば、ファイル更新しない方法です。
更新がなければ、log[]でも取得されません。
実際のログがないので動作確認はしていませんが、こんな流れでいけるかと。
-------------------------------------------------------------------------------------------------------
#!/bin/sh
cd /script
touch ./tmp.prv
# expectシェルを起動
./ssh-test.sh > ./tmp.txt
# ssh接続結果から必要部分を抜き出す
sed -n -e "/show events/,/#/p" < ./tmp.txt |
grep -v 'show events\|#$' > ./tmp.crn
# 前回取得値と今回取得値を比較
diff ./tmp.prv ./tmp.crn > /dev/null
# 差異がなければ終了
if [ $? = 0 ];then
exit
fi
# 今回取得値をZabbix取得用ファイルへコピー
cp ./tmp.crn ./sshtestcron
# 今回取得値を保存
cp ./tmp.crn ./tmp.prv
-------------------------------------------------------------------------------------------------------
KN - 投稿数: 33
スクリプトありがとうございます。
>更新がなければ、log[]でも取得されません。
とのことですが、zabbixは同じデータを繰り返しとってヒストリに挙げています。
差異がなければ空ファイル?にしたら良いのかわかりませんが、取らないようにできたらと思います。
minayan - 投稿数: 44
よく見ると、サンプルスクリプトが間違っていますね。
誤:diff ./tmp.prv /tmp.crn > /dev/null
正:diff ./tmp.prv ./tmp.crn > /dev/null
/tmp.crnの頭にドットが抜けています。
すいません、スクリプトを直してください。
※この間違いで、現状たどsshtestcronのタイムスタンプが1分ごとに更新されているとおもいます
KN - 投稿数: 33
1分ごとに、最新1個のログをとれるようになりました。
1分以内で複数のログが出なければ、運用可能だと思います。
ありがとうございました。
minayan - 投稿数: 44
>1分以内で複数のログが出なければ、運用可能だと思います。
show events last 2となっているのをshow eventsだけにすれば、1分間に複数のログが出たとしても大丈夫かと。
落ち着いたところで、cronの実行間隔の見直しや、zabbixでの取得間隔の調整をされるとよろしいかと思います。
紆余曲折ありましたが、上手くいってよかったです。