From edbe0279bc6364a028095604bfc18d8923679637 Mon Sep 17 00:00:00 2001 From: Konano Date: Mon, 27 Nov 2023 12:51:15 +0800 Subject: [PATCH] add update_boot_info --- files/sysinfo_network_simple.py | 52 +++++++++++++++++++++++++++++++++ init_priv.sh | 15 ++++++++++ 2 files changed, 67 insertions(+) create mode 100644 files/sysinfo_network_simple.py diff --git a/files/sysinfo_network_simple.py b/files/sysinfo_network_simple.py new file mode 100644 index 0000000..1a736a1 --- /dev/null +++ b/files/sysinfo_network_simple.py @@ -0,0 +1,52 @@ +from functools import partial +from operator import itemgetter + +from netifaces import AF_INET, AF_INET6 +from twisted.internet.defer import succeed + +from landscape.lib.network import get_active_device_info + + +class Network_Simple(object): + """Show information about active network interfaces. + + @param get_device_info: Optionally, a function that returns information + about network interfaces. Defaults to L{get_active_device_info}. + """ + + def __init__(self, get_device_info=None): + if get_device_info is None: + get_device_info = partial(get_active_device_info, extended=True) + self._get_device_info = get_device_info + + def register(self, sysinfo): + """Register this plugin with the sysinfo system. + + @param sysinfo: The sysinfo registry. + """ + self._sysinfo = sysinfo + + def run(self): + """ + Gather information about network interfaces and write it to the + sysinfo output. + + @return: A succeeded C{Deferred}. + """ + device_info = self._get_device_info() + for info in sorted(device_info, key=itemgetter('interface')): + interface = info["interface"] + if interface.startswith('br-'): + continue + if interface.startswith('docker'): + continue + ipv4_addresses = info["ip_addresses"].get(AF_INET, []) + ipv6_addresses = info["ip_addresses"].get(AF_INET6, []) + for addr in ipv4_addresses: + self._sysinfo.add_header( + "IPv4 address for %s" % interface, addr['addr']) + for addr in ipv6_addresses: + self._sysinfo.add_header( + "IPv6 address for %s" % interface, addr['addr']) + + return succeed(None) diff --git a/init_priv.sh b/init_priv.sh index e3ac641..50e593f 100755 --- a/init_priv.sh +++ b/init_priv.sh @@ -170,6 +170,20 @@ configure_timedate() { fi } +configure_boot_info() { + [ -d /etc/update-motd.d/disable ] && return + + if confirm_action "要修改 启动信息 吗?" "Y"; then + sudo mkdir /etc/update-motd.d/disable + sudo mv /etc/update-motd.d/10-help-text /etc/update-motd.d/disable/ + sudo mv /etc/update-motd.d/50-motd-news /etc/update-motd.d/disable/ + if [ -d /usr/lib/python3/dist-packages/landscape/sysinfo ]; then + sudo sed -i 's/"Network"/"Network_Simple"/g' /usr/lib/python3/dist-packages/landscape/sysinfo/deployment.py + sudo cp $scriptdir/files/sysinfo_network_simple.py /usr/lib/python3/dist-packages/landscape/sysinfo/network_simple.py + fi + fi +} + # ============================================================ configure_tuna @@ -184,3 +198,4 @@ configure_fail2ban configure_iptables configure_hostname configure_timedate +configure_boot_info