mirror of
				https://git.openwrt.org/openwrt/openwrt.git
				synced 2025-11-04 06:38:42 +00:00 
			
		
		
		
	Passing all arguments to /etc/init.d/$service restores the behaviour of openwrt 21.02. This is relevant for services such as etherwake which take more then one argument, e.g.: "service etherwake start <list of devices to wake>" Signed-off-by: Andrew Ammerlaan <andrewammerlaan@gentoo.org>
		
			
				
	
	
		
			31 lines
		
	
	
		
			716 B
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			31 lines
		
	
	
		
			716 B
		
	
	
	
		
			Bash
		
	
	
	
	
	
#!/bin/sh
 | 
						|
 | 
						|
main() {
 | 
						|
	local service="$1"
 | 
						|
	shift
 | 
						|
 | 
						|
	local boot status
 | 
						|
 | 
						|
	if [ -f "/etc/init.d/${service}" ]; then
 | 
						|
		/etc/init.d/"${service}" "$@"
 | 
						|
		exit "$?"
 | 
						|
	fi
 | 
						|
 | 
						|
	if [ -n "$service" ]; then
 | 
						|
		echo "Service \"$service\" not found:"
 | 
						|
		exit 1
 | 
						|
	fi
 | 
						|
 | 
						|
	echo "Usage: $(basename "$0") <service> [command]"
 | 
						|
	for service in /etc/init.d/* ; do
 | 
						|
		boot="$($service enabled && echo "enabled" || echo "disabled" )"
 | 
						|
		status="$( [ "$(ubus call service list "{ 'verbose': true, 'name': '$(basename "$service")' }" \
 | 
						|
			| jsonfilter -q -e "@['$(basename "$service")'].instances[*].running" | uniq)" = "true" ] \
 | 
						|
			&& echo "running" || echo "stopped" )"
 | 
						|
 | 
						|
		printf "%-30s\\t%10s\\t%10s\\n"  "$service" "$boot" "$status"
 | 
						|
	done
 | 
						|
}
 | 
						|
 | 
						|
main "$@"
 |