mirror of
				https://github.com/Ysurac/openmptcprouter-feeds.git
				synced 2025-03-09 15:40:03 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			69 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
| #!/bin/sh
 | |
| 
 | |
| . /usr/share/libubox/jshn.sh
 | |
| 
 | |
| PIDFILE="/var/run/packet_capture.pid"
 | |
| 
 | |
| if [ -f "$PIDFILE"];then
 | |
|     echo "error: Packet capture is running"
 | |
|     exit 1
 | |
| fi
 | |
| 
 | |
| json_load "$1"
 | |
| json_get_var interface interface
 | |
| json_get_var filter filter
 | |
| json_get_var duration duration
 | |
| json_get_var packets packets
 | |
| json_get_var verbose verbose
 | |
| json_get_var domains domains
 | |
| json_get_var file file
 | |
| 
 | |
| args="-n"
 | |
| 
 | |
| if [ "$domains" == "1" ];then
 | |
| 	args=""
 | |
| fi
 | |
| 
 | |
| if  [ -n "$interface" ];then
 | |
| 	ip a show "$interface" > /dev/null 2>&1
 | |
| 	if [ "$?" == "1" ]; then
 | |
|         echo "error: Incorrect format of an interface"
 | |
|         exit 1
 | |
|     fi
 | |
| 
 | |
| 	args="$args -i $interface"
 | |
| fi
 | |
| 
 | |
| if [ -n "$packets" ];then
 | |
|     echo "$packets" | egrep  '^[0-9]*$'
 | |
|     if [ "$?" -eq 0 ];then
 | |
|         args="$args -c $packets"
 | |
|     else
 | |
|         echo "error: Incorrect packets argument"
 | |
|         exit 1
 | |
|     fi
 | |
| fi
 | |
| 
 | |
| if [ "$verbose" == "1"  ];then
 | |
| 	args="$args  -e"
 | |
| fi
 | |
| 
 | |
| if [ "$file" == "1" ];then
 | |
| 	mem=$(awk '/MemTotal/ {print $2}' /proc/meminfo)
 | |
| 	args="$args -W 2 -C $((mem/(1024 * 10))) -w /tmp/capture.pcap -z /usr/libexec/packet_capture_stop"
 | |
| fi
 | |
| 
 | |
| if [ -n "$filter" ];then
 | |
|     tcpdump -i lo -d "$filter" >/dev/null 2>/dev/null
 | |
| 	if [ $? -eq 1 ];then
 | |
| 		echo "error: Incorrect filter argument"
 | |
| 		exit 1
 | |
| 	fi
 | |
| 	echo "$filter" > /tmp/tcpdump_filter
 | |
| fi
 | |
| 
 | |
| (/usr/libexec/packet_capture "$args" "$duration")&
 | |
| 
 | |
| echo $! > /var/run/packet_capture.pid
 | |
| 
 | |
| exit 0
 |