2011-09-01 18 views
7

En mi empresa, algunos comandos se pueden ejecutar con sudo, como tcpdump. Otros no.cómo finalizar un proceso que se ejecuta con sudo? Ctrl + C hacerlo, pero no matar

Espero ejecutar tcpdump por un tiempo, y luego detenerlo. cuando corro tcpdump, y podría abortar que con Ctrl + C

escribí un script como este -

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

que no funciona muy bien. El proceso de tcpdump se ejecuta como raíz y el usuario actual es una cuenta normal.

Mi pregunta es: ¿hay alguna forma de hacer el equivalente de ctrl c en bash script ?.

EDIT:

PS: Como la política de seguridad de mi empresa, no puedo correr matar como root.

Respuesta

5

Pruebe la opción -Z en tcpdump. Enseña a tcpdump a soltar privilegios de raíz y ejecutarlo como el usuario especificado en el argumento.

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

Ahora intente matar ese proceso.

+0

'-Z' toma un argumento ... –

+0

¡genial! Funciona. Muchas gracias. – blaketang

5

Basta con ejecutar a través killsudo así:

sudo kill -2 $! 

De esta manera el proceso de kill tendrá el privilegio de enviar señales a un proceso que se ejecuta como root.

+2

Gracias Blagovest , Lamento que mi pregunta no fuera clara Para la política de seguridad de mi empresa, no puedo ejecutar kill como root y no puedo agregar ningún comando al archivo de configuración de sudo. – blaketang

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

bloqueará el script, es necesario ponerlo en el fondo:

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

.

Esto y answer from Blagovest deberían hacerlo.

+0

tiene razón, y debe adjuntarse. – blaketang

1

El comando timeout también finaliza un programa después de tanto tiempo. sudo timeout 5 tcpdump -ieth1 -w ~/dump.bin debería lograr lo mismo que el script.

+1

el comando de tiempo de espera se debe agregar primero al archivo de configuración de sudo. No puedo hacerlo, debido a la política de seguridad de la compañía. – blaketang

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

G - segundos de tiempo de espera (Después del período de tiempo de espera de la comman muere automáticamente) Z - raíz gota y se ejecuta como privilegio del usuario W - número de archivos que se guarden (como un archivo dividido)

Cuestiones relacionadas