home_server:home_server_setup:other_services:ssh

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revisionBoth sides next revision
home_server:home_server_setup:other_services:ssh [2022-06-26 Sun wk25 14:26] – [Login Scripts] baumkphome_server:home_server_setup:other_services:ssh [2023-12-10 Sun wk49 13:16] baumkp
Line 1: Line 1:
 +{{tag>linux debian ubuntu ssh "ssh notes"}}
 ======SSH Notes====== ======SSH Notes======
  
Line 13: Line 13:
  
 ====Login Scripts==== ====Login Scripts====
 +====Debian====
   *''ls -la /etc/update-motd.d/'' to see the scripts that are run after the MOTD is displayed.   *''ls -la /etc/update-motd.d/'' to see the scripts that are run after the MOTD is displayed.
 The Debian script is very simple:  The Debian script is very simple: 
-<code>+<code bash>
 #!/bin/sh #!/bin/sh
 uname -snrvm uname -snrvm
 </code> </code>
 +
 +====Ubuntu====
 Ubuntu has multiple scripts some that I like and some that I do not like.   Ubuntu has multiple scripts some that I like and some that I do not like.  
 This system status information script, ++++/etc/update-motd.d/50-landscape-sysinfo| This system status information script, ++++/etc/update-motd.d/50-landscape-sysinfo|
Line 67: Line 70:
 </code> </code>
   *If twisted not installed, ''pip install twisted'' to install   *If twisted not installed, ''pip install twisted'' to install
 +  *if cpuinfo not installed, ''pip install py-cpuinfo'' to install
 +++++
 +
 +====Python Code====
 +++++python3 agnostic code | 
 +<code>
 +#!/usr/bin/python3
 +
 +import psutil
 +import platform
 +from datetime import datetime
 +import cpuinfo
 +import socket
 +import uuid
 +import re
 +
 +def get_size(bytes, suffix="B"):
 +    """
 +    Scale bytes to its proper format
 +    e.g:
 +        1253656 => '1.20MB'
 +        1253656678 => '1.17GB'
 +    """
 +    factor = 1024
 +    for unit in ["", "K", "M", "G", "T", "P"]:
 +        if bytes < factor:
 +            return f"{bytes:.2f}{unit}{suffix}"
 +        bytes /= factor
 +
 +def System_information():
 +    print("="*40, "System Information", "="*40)
 +    uname = platform.uname()
 +    print(f"System: {uname.system}")
 +    print(f"Node Name: {uname.node}")
 +    print(f"Release: {uname.release}")
 +    print(f"Version: {uname.version}")
 +    print(f"Machine: {uname.machine}")
 +    print(f"Processor: {uname.processor}")
 +    print(f"Processor: {cpuinfo.get_cpu_info()['brand_raw']}")
 +    print(f"Ip-Address: {socket.gethostbyname(socket.gethostname())}")
 +    print(f"Mac-Address: {':'.join(re.findall('..', '%012x' % uuid.getnode()))}")
 +
 +    # Boot Time
 +    print("="*40, "Boot Time", "="*40)
 +    boot_time_timestamp = psutil.boot_time()
 +    bt = datetime.fromtimestamp(boot_time_timestamp)
 +    print(f"Boot Time: {bt.year}/{bt.month}/{bt.day} {bt.hour}:{bt.minute}:{bt.second}")
 +
 +    # print CPU information
 +    print("="*40, "CPU Info", "="*40)
 +    # number of cores
 +    print("Physical cores:", psutil.cpu_count(logical=False))
 +    print("Total cores:", psutil.cpu_count(logical=True))
 +    # CPU frequencies
 +    cpufreq = psutil.cpu_freq()
 +    print(f"Max Frequency: {cpufreq.max:.2f}Mhz")
 +    print(f"Min Frequency: {cpufreq.min:.2f}Mhz")
 +    print(f"Current Frequency: {cpufreq.current:.2f}Mhz")
 +    # CPU usage
 +    print("CPU Usage Per Core:")
 +    for i, percentage in enumerate(psutil.cpu_percent(percpu=True, interval=1)):
 +        print(f"Core {i}: {percentage}%")
 +    print(f"Total CPU Usage: {psutil.cpu_percent()}%")
 +
 +    # Memory Information
 +    print("="*40, "Memory Information", "="*40)
 +    # get the memory details
 +    svmem = psutil.virtual_memory()
 +    print(f"Total: {get_size(svmem.total)}")
 +    print(f"Available: {get_size(svmem.available)}")
 +    print(f"Used: {get_size(svmem.used)}")
 +    print(f"Percentage: {svmem.percent}%")
 +
 +    print("="*20, "SWAP", "="*20)
 +    # get the swap memory details (if exists)
 +    swap = psutil.swap_memory()
 +    print(f"Total: {get_size(swap.total)}")
 +    print(f"Free: {get_size(swap.free)}")
 +    print(f"Used: {get_size(swap.used)}")
 +    print(f"Percentage: {swap.percent}%")
 +
 +    # Disk Information
 +    print("="*40, "Disk Information", "="*40)
 +    print("Partitions and Usage:")
 +    # get all disk partitions
 +    partitions = psutil.disk_partitions()
 +    for partition in partitions:
 +        print(f"=== Device: {partition.device} ===")
 +        print(f"  Mountpoint: {partition.mountpoint}")
 +        print(f"  File system type: {partition.fstype}")
 +        try:
 +            partition_usage = psutil.disk_usage(partition.mountpoint)
 +        except PermissionError:
 +            # this can be catched due to the disk that
 +            # isn't ready
 +            continue
 +        print(f"  Total Size: {get_size(partition_usage.total)}")
 +        print(f"  Used: {get_size(partition_usage.used)}")
 +        print(f"  Free: {get_size(partition_usage.free)}")
 +        print(f"  Percentage: {partition_usage.percent}%")
 +    # get IO statistics since boot
 +    disk_io = psutil.disk_io_counters()
 +    print(f"Total read: {get_size(disk_io.read_bytes)}")
 +    print(f"Total write: {get_size(disk_io.write_bytes)}")
 +
 +    ## Network information
 +    print("="*40, "Network Information", "="*40)
 +    ## get all network interfaces (virtual and physical)
 +    if_addrs = psutil.net_if_addrs()
 +    for interface_name, interface_addresses in if_addrs.items():
 +        for address in interface_addresses:
 +            print(f"=== Interface: {interface_name} ===")
 +            if str(address.family) == 'AddressFamily.AF_INET':
 +                print(f"  IP Address: {address.address}")
 +                print(f"  Netmask: {address.netmask}")
 +                print(f"  Broadcast IP: {address.broadcast}")
 +            elif str(address.family) == 'AddressFamily.AF_PACKET':
 +                print(f"  MAC Address: {address.address}")
 +                print(f"  Netmask: {address.netmask}")
 +                print(f"  Broadcast MAC: {address.broadcast}")
 +    ##get IO statistics since boot
 +    net_io = psutil.net_io_counters()
 +    print(f"Total Bytes Sent: {get_size(net_io.bytes_sent)}")
 +    print(f"Total Bytes Received: {get_size(net_io.bytes_recv)}")
 +
 +if __name__ == "__main__":
 +
 +    System_information()
 +</code>
 ++++ ++++
  
-Some Links:+====Some Links:====
   *[[How to manage SSH login message|https://www.simplified.guide/ssh/suppress-banner]]   *[[How to manage SSH login message|https://www.simplified.guide/ssh/suppress-banner]]
   *[[HowTo: Set a Warning Message (Banner) in SSH|https://www.shellhacks.com/setup-warning-message-banner-ssh/]]   *[[HowTo: Set a Warning Message (Banner) in SSH|https://www.shellhacks.com/setup-warning-message-banner-ssh/]]
  • /app/www/public/data/pages/home_server/home_server_setup/other_services/ssh.txt
  • Last modified: 2023-12-26 Tue wk52 11:38
  • by baumkp