Я хочу, чтобы запустить программу TCP и захватить соответствующие пакеты, мой сценарий оболочки cap.sh
, как показано ниже:ТСРйитр внутри сценария оболочки не захватывает ничего
sudo tcpdump -i eth0 -w mypcap &
sleep 3
./tcp_receiver
sleep 2
x=`ps -ef|grep "tcpdump"|grep -v "grep"|awk '{print $2}'`
sudo kill -9 $x
Я бегу cap.sh
sudo ./cap.sh
так на самом деле в этой оболочке я могу запустить sudo
без пароля , а хост просто виртуальный фрагмент на удаленной машине (узел PLanetlab) , хотя я вижу процесс tcpdump
от ps -ef
не захватит ничего я вижу, файл mypcap
составляет 0 байт после cap.sh
отделок
каковы потенциальные причины? и как заставить tcpdump в сценарии оболочки захватить пакеты? спасибо!
Поиск ПИД-кода с помощью grepping списка процессов также является плохой идеей. Если есть другой экземпляр tcpdump, вы также убьете этот процесс. Вместо этого сохраните PID после запуска tcpdump, используя этот ответ: http://stackoverflow.com/a/1911387/138329. – bradreaves