_list_etc_network_interfaces() { local file for file in /etc/network/interfaces /etc/network/interfaces.d/*; do if ! [ -f "$file" ]; then continue fi case "${file##*/}" in *[^-a-zA-Z0-9_]*) continue ;; esac echo "$file" done } _add_etc_network_interfaces() { local file test -f /etc/network/interfaces || return 0 echo '** Network interface configuration:' >&3 while read file; do if ! [ -r "$file" ]; then echo "*** $file: unreadable" >&3 echo >&3 continue fi echo "*** $file:" >&3 # Hide passwords/keys awk '$1 ~ /key|pass|^wpa-(anonymous|identity|phase|pin|private|psk)/ { gsub(".", "*", $2); } $1 == "ethtool-wol" { gsub(".", "*", $3); } !/^[[:space:]]*\#/ { print; } ' <"$file" >&3 echo >&3 done < <(_list_etc_network_interfaces) } add_network() { yesno "Include network configuration and status from this computer? " nop test $REPLY = yep || return 0 _add_etc_network_interfaces echo '** Network status:' >&3 if command -v ip >/dev/null; then echo '*** IP interfaces and addresses:' >&3 ip address show >&3 echo >&3 fi echo '*** Device statistics:' >&3 cat /proc/net/dev >&3 echo >&3 if command -v netstat >/dev/null; then echo '*** Protocol statistics:' >&3 netstat -s >&3 || true echo >&3 fi echo >&3 } ask_network() { test $same_system = yep || return 0 test -f /etc/network/interfaces || return 0 yesno "Include network configuration from this computer? " nop test $REPLY = yep || return 0 _add_etc_network_interfaces }