Source code for Sys.Hostname

#!/usr/bin/env python3
# Generated by "pythonizer -M -v 0 -s ./PyModules/Sys/Hostname.pm" v0.964 run by JO2742 on Sat Mar 12 16:24:25 2022
# Edited by snoopyjc

__author__ = """Joe Cool"""
___email__ = 'snoopyjc@gmail.com'
__version__ = '1.030'

import signal, re, perllib, builtins, os

_str = lambda s: "" if s is None else str(s)
_locals_stack = []
perllib.init_package("Sys.Hostname")


[docs]def hostname(): """Implementation of Sys::Hostname::hostname function: Try every conceivable way to get hostname. Usage: from Sys.Hostname import hostname host = hostname() """ rslt = None # method 1 - we already know it if (Sys.Hostname.host) is not None: return Sys.Hostname.host # method 1' - try to ask the system #if "ghname" in globals(): try: import socket Sys.Hostname.ghname = socket.gethostname Sys.Hostname.host = Sys.Hostname.ghname() except Exception: pass if (Sys.Hostname.host) is not None: return Sys.Hostname.host if perllib.os_name() == "MSWin32": #[Sys.Hostname.host] = perllib.list_of_n(Sys.Hostname.gethostbyname("localhost"), 1) try: import platform Sys.Hostname.host = platform.node() except Exception: pass if Sys.Hostname.host is None: Sys.Hostname.host = perllib.run_s("hostname 2> NUL") Sys.Hostname.host = Sys.Hostname.host.rstrip("\n") return Sys.Hostname.host else: try: _locals_stack.append(os.environ) # is anyone going to make it here? os.environ = os.environ.copy() os.environ["PATH"] = "/usr/bin:/bin:/usr/sbin:/sbin" # Paranoia. # method 2 - syscall is preferred since it avoids tainting problems # XXX: is it such a good idea to return hostname untainted? # try: # try: # _locals_stack.append(perllib.TRACEBACK) # perllib.TRACEBACK = 0 # perllib.import_(globals(), "syscall.ph") # Sys.Hostname.host = "\0" * 65 ## preload scalar # perllib.num( # Sys.Hostname.syscall( # Sys.Hostname.SYS_gethostname(_args), Sys.Hostname.host, 65 # ) # ) == 0 # # finally: # perllib.TRACEBACK = _locals_stack.pop() # # # method 2a - syscall using systeminfo instead of gethostname # # -- needed on systems like Solaris # # perllib.EVAL_ERROR = None # except Exception as _e: # perllib.EVAL_ERROR = perllib.exc(_e) # # _eval_result86 = None try: import platform Sys.Hostname.host = platform.node() if Sys.Hostname.host: return Sys.Hostname.host except Exception: pass # try: # try: # _locals_stack.append(perllib.TRACEBACK) # perllib.TRACEBACK = 0 # perllib.import_(globals(), "sys/syscall.ph") # perllib.import_(globals(), "sys/systeminfo.ph") # Sys.Hostname.host = "\0" * 65 ## preload scalar # perllib.num( # Sys.Hostname.syscall( # Sys.Hostname.SYS_systeminfo(_args), # Sys.Hostname.SI_HOSTNAME(_args), # Sys.Hostname.host, # 65, # ) # ) != -1 # # finally: # perllib.TRACEBACK = _locals_stack.pop() # # # method 3 - trusty old hostname command # # perllib.EVAL_ERROR = None # except Exception as _e: # perllib.EVAL_ERROR = perllib.exc(_e) # # _eval_result95 = None try: try: _locals_stack.append(perllib.TRACEBACK) _locals_stack.append(signal.getsignal(signal.SIGCHLD)) perllib.TRACEBACK = 0 signal.signal(signal.SIGCHLD, signal.SIG_IGN) Sys.Hostname.host = perllib.run_s("(hostname) 2>/dev/null") # BSDish if Sys.Hostname.host: Sys.Hostname.host = Sys.Hostname.host.translate(str.maketrans("", "", "\x00\r\n")) return Sys.Hostname.host finally: signal.signal(signal.SIGCHLD, _locals_stack.pop()) perllib.TRACEBACK = _locals_stack.pop() # method 4 - use POSIX::uname(), which strictly can't be expected to be # correct perllib.EVAL_ERROR = None except Exception as _e: perllib.EVAL_ERROR = perllib.exc(_e) _eval_result103 = None try: try: _locals_stack.append(perllib.TRACEBACK) perllib.TRACEBACK = 0 pass # SKIPPED: require POSIX; Sys.Hostname.host = (POSIX.uname())[1] if Sys.Hostname.host: return Sys.Hostname.host finally: perllib.TRACEBACK = _locals_stack.pop() # method 5 - sysV uname command (may truncate) perllib.EVAL_ERROR = None except Exception as _e: perllib.EVAL_ERROR = perllib.exc(_e) _eval_result110 = None try: try: _locals_stack.append(perllib.TRACEBACK) perllib.TRACEBACK = 0 Sys.Hostname.host = perllib.run_s("uname -n 2>/dev/null") ## sysVish finally: perllib.TRACEBACK = _locals_stack.pop() # bummer perllib.EVAL_ERROR = None except Exception as _e: perllib.EVAL_ERROR = perllib.exc(_e) # remove garbage Sys.Hostname.host = Sys.Hostname.host.translate(str.maketrans("", "", "\x00\r\n")) return Sys.Hostname.host finally: os.environ = _locals_stack.pop()
Sys.Hostname.hostname = hostname Sys.Hostname.VERSION = perllib.init_global("Sys.Hostname", "VERSION", "") Sys.Hostname.host = perllib.init_global("Sys.Hostname", "host", None) builtins.__PACKAGE__ = "Sys.Hostname" # SKIPPED: use strict; # SKIPPED: use Carp; # SKIPPED: require Exporter; Sys.Hostname.ISA = "Exporter".split() Sys.Hostname.EXPORT = "hostname".split() #perllib.WARNING = 1 if True: # BEGIN: Sys.Hostname.VERSION = "1.23" # for _ in range(1): # try: # _locals_stack.append(perllib.TRACEBACK) # perllib.TRACEBACK = 0 # try: # import XSLoader as _XSLoader # # XSLoader.load() # perllib.EVAL_ERROR = None # except Exception as _e: # perllib.EVAL_ERROR = perllib.exc(_e) # # if perllib.EVAL_ERROR: # print(perllib.EVAL_ERROR) # # finally: # perllib.TRACEBACK = _locals_stack.pop()