検索
特集

Samba共有ファイルを使用中のマシンが分かるスクリプトLeverage OSS(2/2 ページ)

簡単なコマンドの組み合わせで大きな仕事も容易に片付けることができる。今回作成するのは、Samba共有ファイルを使用中のマシンを見つけるスクリプトだ。

PC用表示 関連情報
Share
Tweet
LINE
Hatena
SourceForge.JP Magazine
前のページへ |       

 続いて、netstatコマンドを使ってこれらのPID番号をネットワークソケットに関連づける。次のようにnetstatに-pオプションを指定すると、各ソケットが属するプログラムのPIDと名前が表示される。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 4番目のカラム(192.168.100.250:netbios-ssn)はサーバマシンを、5番目のカラム(168.100.32:1028)はクライアントマシンのIPアドレスおよびポート番号を示している。ここで必要なのは5番目のカラムの方である。

 今度は、PIDをtmpファイルに記録する処理をすべて1つのスクリプトにまとめてみよう。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 netstat -p | grep $row | gawk '{ print $5 }' | cut -d":" -f1という行は、まずnetstatを実行してから$rowに対するgrepを呼び出す。この変数$rowには、tmpファイルのそれぞれの行が順に入る。続いてgawkで5番目のカラムを抜き出した後、cutでデリミタ":"を除いた上でIPアドレスに当たる最初のフィールドを取り出す。

 このスクリプトに名前をつけたら、chmod 700 script.shによって実行ファイルにする。スクリプトの実行結果は、次のようになるはずだ。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 後はIPアドレスとユーザー名の関連づけを行うだけでよい。そのために、以下のような行を/etc/hostsに追記する。

192.168.100.32     Lindsay_Hayek

192.168.100.78     Salma_Lohan

192.168.100.145    Tom_Norton

192.168.100.193    Edward_Cruise


 また、この/etc/hostsを参照するためのgrepを、先ほどのスクリプトのnetstatの行に加えて次のようにする。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 しかしこのままでは、/etc/hostsに記されていないIPアドレスが見つかった場合、このスクリプトはエラーを返し、単純にそのIPアドレスを表示してはくれない。この問題はif文を使えば解決できる。前記の命令が正しいものであれば(変数$?に0が返される)、スクリプトはtmpファイルの次の行に進む。しかし、0以外の値が返された場合は該当するIPアドレスが/etc/hostsに見つからなかったということなので、単純にそのIPアドレスを表示するようになっている。後でネットワーク管理者に訊けば、そのIPアドレスが誰のものか分かるかもしれない。ここで、最終的なスクリプトを以下に示す。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 実行すると、次のような結果が得られる。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 このスクリプトはさらに拡張することもできる。例えば、lsof | grep /usr/apps/payroll | gawk '{ print $2 }' | uniq > tmpの行でpayrollと指定してしまうと対象とするアプリケーションが変わるたびにその部分を編集しなければならなくなるので、次のようにするとよい。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 ここで$1はコマンドラインから渡す引数であり、次のようにして指定する。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 また、アプリケーションのメニューを作成したり、Zenityを使ってXウインドウ環境での対話型スクリプトにしたりすることも可能だろう。

 Sergio Gonzalez DuranはLinux管理者やシステム開発者、またネットワークセキュリティのカウンセラーとして活動しながら、各種Linux講座での指導や、 Linuxおよびオープンハウス関連のスペイン語WebサイトLinuxtotal.com.mxの公開も手掛けている。


関連キーワード

Leverage OSS | Samba | コマンドライン | 便利


前のページへ |       

Copyright © 2010 OSDN Corporation, All Rights Reserved.

ページトップに戻る