Jelajahi Sumber

IPV6: Listing Network. New shell script

bin/v-list-network
asmcc 3 tahun lalu
induk
melakukan
bc5206f55f
1 mengubah file dengan 71 tambahan dan 0 penghapusan
  1. 71 0
      bin/v-list-network

+ 71 - 0
bin/v-list-network

@@ -0,0 +1,71 @@
+#!/bin/bash
+# info: list system network
+# options: [FORMAT] [FILTER]
+#
+# example: v-list-sys-network list 6
+#
+# This function for obtaining the list of system ip addresses.
+
+#----------------------------------------------------------#
+#                Variables & Functions                     #
+#----------------------------------------------------------#
+
+function list_network() {
+	ip_view=${1-shell}
+	ip_type=${2}
+	ip_filter=""
+	ii=1
+	[ -n "$ip_type" ] && [ $ip_type -ne 4 -a $ip_type -ne 6 ] && ip_type=""
+	[ -n "$ip_type" ] && ip_filter=" -$ip_type"
+	ip_raw_string="$(/sbin/ip$ip_filter addr show scope global | sed -ne '/^[0-9]*\:/{h;d};G;s/^\(.*\)\n[0-9]*:\(.*\)/\1 \2/;/inet/s/[ \t]*inet[6]* \([0-9a-z.:]*\)\/\([0-9]*\).* \([0-9a-z]*\):[ \t]<.*>.*/\1 \2 \3/p')"
+	ip_count=$(echo "$ip_raw_string" | wc -l)
+	case $ip_view in
+	shell)
+		printf '%-25s%-5s%-8s\n' 'IP address' 'Mask' 'Interface'
+		echo "------------------------ ---- ---------"
+		;;
+	csv)
+		echo 'IP,MASK,INTERFACE'
+		;;
+	esac
+	echo "$ip_raw_string" | while read ip_addr ip_mask ip_iface; do
+		case $ip_view in
+		list)
+			echo "${ip_addr}"
+			;;
+		plain)
+			echo "${ip_addr} ${ip_mask} ${ip_iface}"
+			;;
+		shell)
+			printf '%-25s%-5s%-8s\n' ${ip_addr} ${ip_mask} ${ip_iface}
+			;;
+		csv)
+			echo "${ip_addr},${ip_mask},${ip_iface}"
+			;;
+		json)
+			echo -n '    "'$ip_addr'": {
+			"MASK": "'$ip_mask'",
+			"INTERFACE": "'$ip_iface'"
+			}'
+			if [ "$ii" -lt "$ip_count" ]; then
+				echo ','
+			else
+				echo
+			fi
+			;;
+		esac
+		(( ii++ ))
+	done
+}
+
+#----------------------------------------------------------#
+#                       Action                             #
+#----------------------------------------------------------#
+
+list_network $1 $2
+
+#----------------------------------------------------------#
+#                       Hestia                             #
+#----------------------------------------------------------#
+
+exit