Если вы используете Линукс оболочку, вы можете использовать tcpdump
, чтобы выполнить эту работу. Большинство команд, используемых в оболочке, предварительно установлены в большинстве дистрибутивов Linux.
#!/bin/sh
# # # Run this as sudo
# # # Pass an argument of your IP address
# # $ Usage: sudo ./<nameOfTheScript> <IPofYourMachine>
# Parameters
captureTime=300
# Capture packets for X Seconds
tcpdump -i eth0 dst host $1 >> /dev/null 2> out &
pid=$!
sleep $captureTime
kill $pid
# Extract relevant data
cat out | tail -2 | head -1 | cut -d " " -f 1
# Cleaning up!
rm out
Оболочка работает tcpdump
для 300
секунд и завершает его. tcpdump
выводит данные, которые вам требуются, stderr
. Это было бы причиной перенаправления этого потока в файл (2> out
). Последняя команда оболочки извлекает данные, которые мы хотим, из полного сообщения, которое выбрано из tcpdump
. Он должен быть запущен как sudo
! Также не забудьте изменить интерфейс прослушивания по мере необходимости.
Если до сих пор неясно, почему я сделал то, что сделал, дайте мне знать!
Я думаю, вы можете использовать '/ sys/class/net/eth0/statistics/rx_packets'. он содержит только число, поэтому вам просто нужно проверить его дважды и вычесть – Duffydake
@ Duffydake Учитывая указанную проблему, это должен быть ответ. Другие ответы, хотя и действительны, наверняка переполнены для запроса. – msw