Samba共有ファイルを使用中のマシンが分かるスクリプト:Leverage OSS(2/2 ページ)
簡単なコマンドの組み合わせで大きな仕事も容易に片付けることができる。今回作成するのは、Samba共有ファイルを使用中のマシンを見つけるスクリプトだ。
続いて、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の公開も手掛けている。
関連記事
- Firefox拡張:FEBE――Firefox環境のバックアップとリストア
FEBEにはインストールする価値が十分にある。FEBEを使えば、Firefoxが保存しているすべてのもの+αをバックアップおよびリストア可能となる。自動バックアップをセットしておいて複数の時刻のバックアップを保存するのも朝飯前だ。 - rsyncを使った熟練者レベルのバックアップ
rsyncを使いこなせば、あなたが想定するバックアップのニーズのほとんどに対応できるようになる。ここでは、あなたをrsyncマスターにするためのポイントを解説する。 - LVMで楽々ディスク管理
かつてディスク空間の管理は手間も時間もかかり、管理者にとってもユーザーにとってもいらだたしいものだった。しかしLVMを使用すれば、ほとんど苦労することなくディスク空間を増やしたり、減らしたり、管理したりできる。
Copyright © 2010 OSDN Corporation, All Rights Reserved.