2011-09-01 2 views
7

私の会社では、tcpdumpなどのsudoで実行できるコマンドがいくつかあります。他にはありません。sudoで実行されるプロセスを終了するには? Ctrl + Cは実行しますが、killはしません

しばらくの間、tcpdumpを実行してから停止してください。 は私に、tcpdumpを実行すると、私はCtrlキー+ C

で私はこのようなシェルスクリプトを書いたことを中止する可能性が - それは本当に動作しません

#!/bin/sh 
sudo tcpdump -ieth1 -w ~/dump.bin 
sleep 5 
kill -2 $! 

。 tcpdumpのプロセスはrootで実行され、現在のユーザーは通常のアカウントです。

私の質問です:bashスクリプトでctrl cと同等の処理を行う方法はありますか?

EDIT:

PS:私の会社のセキュリティポリシーとして、私はrootとして殺す実行することはできません。

答えて

5

-Zオプションをtcpdumpに設定してみてください。これはtcpdumpにroot特権を落とし、引数に指定されたユーザとして実行するように指示します。

sudo tcpdump -Z $USER -ieth1 -w ~/dump.bin 

このプロセスを強制終了してください。

+0

'-Z'は引数をとります... –

+0

素晴らしい!それは動作します。どうもありがとうございました。 – blaketang

5

は、単純に、同様sudoを通じてkillを実行します。

sudo kill -2 $! 

この方法killプロセスがrootとして実行されるプロセスにシグナルを送信する権限を持つことになります。

+2

おかげBlagovest私の質問がはっきりしないことは申し訳なく思っています!私の会社のセキュリティポリシーについては、rootとしてkillを実行することはできません。sudo configファイルにコマンドを追加することはできません。 – blaketang

0
sudo tcpdump -ieth1 -w ~/dump.bin 

スクリプトをブロックします、あなたが背景にそれを配置する必要があります:

sudo tcpdump -ieth1 -w ~/dump.bin & 

これとanswer from Blagovestを実行する必要があります。

+0

あなたは正しいですし、追加する必要があります。 – blaketang

1

また、timeoutコマンドは、あまりにも長くプログラムを終了します。 sudo timeout 5 tcpdump -ieth1 -w ~/dump.binはスクリプトと同じことを達成する必要があります。

+1

最初にsudo設定ファイルにtimeoutコマンドを追加する必要があります。これは会社のセキュリティポリシーのためにできません。 – blaketang

0
sudo tcpdump -Z root -w ~/dump.bin -n -i eth0 -G 300 -W 1 

G - タイムアウト秒(タイムアウト期間後commanが自動的に殺さ) Z - ドロップルートとユーザー権限 Wとして動作します - 数(分割さファイルとして)保存するファイル

関連する問題