Я пытаюсь написать сценарий bash в Ubuntu, чтобы установить приложение на эмуляторе Android, отправить случайные команды в приложение с помощью «обезьяны» и захватить все данные с помощью tcpdump. Код:
#!/bin/bash
#store all apks files in array
shopt -s nullglob
packageArray=(*.apk)
function getPackageName()
{
myResult= aapt dump badging $1 | grep package | awk '{print $2}' | sed s/name=//g | sed s/\'//g
}
#loop through array installing, testing and capturing data, and uninstalling
for i in "${packageArray[@]}";
do
:
myResult=$(getPackageName "$i")
echo "------------------INSTALLING-----------------"
sudo adb install $i
echo "*****************INSTALLED****************************"
echo "*****************TESTING****************************"
#-------THESE COMMANDS ARE THE TROUBLE-------
(sudo -i xterm -e "tcpdump src 10.0.2.11 -vvv > /home/seed/Documents/autoTcpLogs/$myResult.pcap" &
sudo -i xterm -e "adb shell monkey -p $myResult -v 500")
echo "------------------DONE TESTING-----------------"
sudo adb uninstall $myResult
echo "*****************PACKAGE UNINSTALLED****************************"
done
Проблема: Мне нужен хороший способ закрытия tcpdump после того, как обезьяна завершила отправку 500 случайных команд. Я пробовал использовать команду KILL несколькими способами, но, похоже, это не помогает.
killall -TERM tcpdump
? - person pah   schedule 02.08.2016kill
. Если это не удается, обновите свой вопрос, указав причину сбоя (сохраните где-нибудь вывод команды kill и вставьте его сюда) - person pah   schedule 02.08.2016sudo
, а сохраненный PID будетsudo
, а неtcpdump
процесса. - person pah   schedule 02.08.2016sudo blah &
, а затемsudo kill $SUDO_PID
- person Barmar   schedule 03.08.2016sudo
, но не процессtcpdump
. Я также думал, что sudo направит сигнал дочернему процессу, но этого, к сожалению, не происходит. - person pah   schedule 03.08.2016sudo sleep 100 &
, и это также убилоsleep
. - person Barmar   schedule 03.08.2016