Linux server.nvwebsoft.co.in 3.10.0-1160.114.2.el7.x86_64 #1 SMP Wed Mar 20 15:54:52 UTC 2024 x86_64
Apache
: 162.240.12.249 | : 18.224.60.19
202 Domain
8.1.31
nbspublicschool
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
README
+ Create Folder
+ Create File
/
usr /
lib /
python2.7 /
site-packages /
cloudinit /
[ HOME SHELL ]
Name
Size
Permission
Action
analyze
[ DIR ]
drwxr-xr-x
cmd
[ DIR ]
drwxr-xr-x
config
[ DIR ]
drwxr-xr-x
distros
[ DIR ]
drwxr-xr-x
filters
[ DIR ]
drwxr-xr-x
handlers
[ DIR ]
drwxr-xr-x
mergers
[ DIR ]
drwxr-xr-x
net
[ DIR ]
drwxr-xr-x
reporting
[ DIR ]
drwxr-xr-x
sources
[ DIR ]
drwxr-xr-x
__init__.py
0
B
-rw-r--r--
__init__.pyc
141
B
-rw-r--r--
__init__.pyo
141
B
-rw-r--r--
apport.py
4.04
KB
-rw-r--r--
apport.pyc
4.36
KB
-rw-r--r--
apport.pyo
4.36
KB
-rw-r--r--
atomic_helper.py
1.32
KB
-rw-r--r--
atomic_helper.pyc
1.52
KB
-rw-r--r--
atomic_helper.pyo
1.52
KB
-rw-r--r--
cloud.py
3.15
KB
-rw-r--r--
cloud.pyc
3.95
KB
-rw-r--r--
cloud.pyo
3.95
KB
-rw-r--r--
cs_utils.py
3
KB
-rw-r--r--
cs_utils.pyc
4.36
KB
-rw-r--r--
cs_utils.pyo
4.36
KB
-rw-r--r--
dhclient_hook.py
2.48
KB
-rw-r--r--
dhclient_hook.pyc
3.21
KB
-rw-r--r--
dhclient_hook.pyo
3.21
KB
-rw-r--r--
ec2_utils.py
8.75
KB
-rw-r--r--
ec2_utils.pyc
7.04
KB
-rw-r--r--
ec2_utils.pyo
7.04
KB
-rw-r--r--
event.py
450
B
-rw-r--r--
event.pyc
507
B
-rw-r--r--
event.pyo
507
B
-rw-r--r--
gpg.py
3.31
KB
-rw-r--r--
gpg.pyc
3.35
KB
-rw-r--r--
gpg.pyo
3.35
KB
-rw-r--r--
helpers.py
14.72
KB
-rw-r--r--
helpers.pyc
16.7
KB
-rw-r--r--
helpers.pyo
16.7
KB
-rw-r--r--
importer.py
1.38
KB
-rw-r--r--
importer.pyc
1.12
KB
-rw-r--r--
importer.pyo
1.12
KB
-rw-r--r--
log.py
4.44
KB
-rw-r--r--
log.pyc
3.85
KB
-rw-r--r--
log.pyo
3.85
KB
-rw-r--r--
netinfo.py
15.94
KB
-rw-r--r--
netinfo.pyc
12.19
KB
-rw-r--r--
netinfo.pyo
12.19
KB
-rw-r--r--
patcher.py
1.23
KB
-rw-r--r--
patcher.pyc
1.49
KB
-rw-r--r--
patcher.pyo
1.49
KB
-rw-r--r--
registry.py
1.01
KB
-rw-r--r--
registry.pyc
1.76
KB
-rw-r--r--
registry.pyo
1.76
KB
-rw-r--r--
safeyaml.py
1.19
KB
-rw-r--r--
safeyaml.pyc
1.82
KB
-rw-r--r--
safeyaml.pyo
1.82
KB
-rw-r--r--
serial.py
1.19
KB
-rw-r--r--
serial.pyc
1.81
KB
-rw-r--r--
serial.pyo
1.81
KB
-rw-r--r--
settings.py
1.93
KB
-rw-r--r--
settings.pyc
1.43
KB
-rw-r--r--
settings.pyo
1.43
KB
-rw-r--r--
signal_handler.py
1.8
KB
-rw-r--r--
signal_handler.pyc
2.29
KB
-rw-r--r--
signal_handler.pyo
2.29
KB
-rw-r--r--
simpletable.py
1.85
KB
-rw-r--r--
simpletable.pyc
2.63
KB
-rw-r--r--
simpletable.pyo
2.63
KB
-rw-r--r--
ssh_util.py
12.5
KB
-rw-r--r--
ssh_util.pyc
12.46
KB
-rw-r--r--
ssh_util.pyo
12.46
KB
-rw-r--r--
stages.py
36.91
KB
-rw-r--r--
stages.pyc
28.99
KB
-rw-r--r--
stages.pyo
28.99
KB
-rw-r--r--
subp.py
1.96
KB
-rw-r--r--
subp.pyc
1.78
KB
-rw-r--r--
subp.pyo
1.78
KB
-rw-r--r--
temp_utils.py
2.87
KB
-rw-r--r--
temp_utils.pyc
3.12
KB
-rw-r--r--
temp_utils.pyo
3.12
KB
-rw-r--r--
templater.py
6.61
KB
-rw-r--r--
templater.pyc
6.32
KB
-rw-r--r--
templater.pyo
6.32
KB
-rw-r--r--
type_utils.py
945
B
-rw-r--r--
type_utils.pyc
729
B
-rw-r--r--
type_utils.pyo
729
B
-rw-r--r--
url_helper.py
21.87
KB
-rw-r--r--
url_helper.pyc
20.33
KB
-rw-r--r--
url_helper.pyo
20.33
KB
-rw-r--r--
user_data.py
13.5
KB
-rw-r--r--
user_data.pyc
10.07
KB
-rw-r--r--
user_data.pyo
10.07
KB
-rw-r--r--
util.py
89.02
KB
-rw-r--r--
util.pyc
81.22
KB
-rw-r--r--
util.pyo
81.22
KB
-rw-r--r--
version.py
585
B
-rw-r--r--
version.pyc
555
B
-rw-r--r--
version.pyo
555
B
-rw-r--r--
warnings.py
3.83
KB
-rw-r--r--
warnings.pyc
3.91
KB
-rw-r--r--
warnings.pyo
3.91
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : netinfo.py
# Copyright (C) 2012 Canonical Ltd. # Copyright (C) 2012 Hewlett-Packard Development Company, L.P. # Copyright (C) 2012 Yahoo! Inc. # # Author: Scott Moser <scott.moser@canonical.com> # Author: Juerg Haefliger <juerg.haefliger@hp.com> # Author: Joshua Harlow <harlowja@yahoo-inc.com> # # This file is part of cloud-init. See LICENSE file for license information. from copy import copy, deepcopy import re from cloudinit import log as logging from cloudinit.net.network_state import net_prefix_to_ipv4_mask from cloudinit import util from cloudinit.simpletable import SimpleTable LOG = logging.getLogger() DEFAULT_NETDEV_INFO = { "ipv4": [], "ipv6": [], "hwaddr": "", "up": False } def _netdev_info_iproute(ipaddr_out): """ Get network device dicts from ip route and ip link info. @param ipaddr_out: Output string from 'ip addr show' command. @returns: A dict of device info keyed by network device name containing device configuration values. @raise: TypeError if ipaddr_out isn't a string. """ devs = {} dev_name = None for num, line in enumerate(ipaddr_out.splitlines()): m = re.match(r'^\d+:\s(?P<dev>[^:]+):\s+<(?P<flags>\S+)>\s+.*', line) if m: dev_name = m.group('dev').lower().split('@')[0] flags = m.group('flags').split(',') devs[dev_name] = { 'ipv4': [], 'ipv6': [], 'hwaddr': '', 'up': bool('UP' in flags and 'LOWER_UP' in flags), } elif 'inet6' in line: m = re.match( r'\s+inet6\s(?P<ip>\S+)\sscope\s(?P<scope6>\S+).*', line) if not m: LOG.warning( 'Could not parse ip addr show: (line:%d) %s', num, line) continue devs[dev_name]['ipv6'].append(m.groupdict()) elif 'inet' in line: m = re.match( r'\s+inet\s(?P<cidr4>\S+)(\sbrd\s(?P<bcast>\S+))?\sscope\s' r'(?P<scope>\S+).*', line) if not m: LOG.warning( 'Could not parse ip addr show: (line:%d) %s', num, line) continue match = m.groupdict() cidr4 = match.pop('cidr4') addr, _, prefix = cidr4.partition('/') if not prefix: prefix = '32' devs[dev_name]['ipv4'].append({ 'ip': addr, 'bcast': match['bcast'] if match['bcast'] else '', 'mask': net_prefix_to_ipv4_mask(prefix), 'scope': match['scope']}) elif 'link' in line: m = re.match( r'\s+link/(?P<link_type>\S+)\s(?P<hwaddr>\S+).*', line) if not m: LOG.warning( 'Could not parse ip addr show: (line:%d) %s', num, line) continue if m.group('link_type') == 'ether': devs[dev_name]['hwaddr'] = m.group('hwaddr') else: devs[dev_name]['hwaddr'] = '' else: continue return devs def _netdev_info_ifconfig(ifconfig_data): # fields that need to be returned in devs for each dev devs = {} for line in ifconfig_data.splitlines(): if len(line) == 0: continue if line[0] not in ("\t", " "): curdev = line.split()[0] # current ifconfig pops a ':' on the end of the device if curdev.endswith(':'): curdev = curdev[:-1] if curdev not in devs: devs[curdev] = deepcopy(DEFAULT_NETDEV_INFO) toks = line.lower().strip().split() if toks[0] == "up": devs[curdev]['up'] = True # If the output of ifconfig doesn't contain the required info in the # obvious place, use a regex filter to be sure. elif len(toks) > 1: if re.search(r"flags=\d+<up,", toks[1]): devs[curdev]['up'] = True for i in range(len(toks)): if toks[i] == "inet": # Create new ipv4 addr entry devs[curdev]['ipv4'].append( {'ip': toks[i + 1].lstrip("addr:")}) elif toks[i].startswith("bcast:"): devs[curdev]['ipv4'][-1]['bcast'] = toks[i].lstrip("bcast:") elif toks[i] == "broadcast": devs[curdev]['ipv4'][-1]['bcast'] = toks[i + 1] elif toks[i].startswith("mask:"): devs[curdev]['ipv4'][-1]['mask'] = toks[i].lstrip("mask:") elif toks[i] == "netmask": devs[curdev]['ipv4'][-1]['mask'] = toks[i + 1] elif toks[i] == "hwaddr" or toks[i] == "ether": devs[curdev]['hwaddr'] = toks[i + 1] elif toks[i] == "inet6": if toks[i + 1] == "addr:": devs[curdev]['ipv6'].append({'ip': toks[i + 2]}) else: devs[curdev]['ipv6'].append({'ip': toks[i + 1]}) elif toks[i] == "prefixlen": # Add prefix to current ipv6 value addr6 = devs[curdev]['ipv6'][-1]['ip'] + "/" + toks[i + 1] devs[curdev]['ipv6'][-1]['ip'] = addr6 elif toks[i].startswith("scope:"): devs[curdev]['ipv6'][-1]['scope6'] = toks[i].lstrip("scope:") elif toks[i] == "scopeid": res = re.match(r'.*<(\S+)>', toks[i + 1]) if res: devs[curdev]['ipv6'][-1]['scope6'] = res.group(1) else: devs[curdev]['ipv6'][-1]['scope6'] = toks[i + 1] return devs def netdev_info(empty=""): devs = {} if util.which('ip'): # Try iproute first of all (ipaddr_out, _err) = util.subp(["ip", "addr", "show"]) devs = _netdev_info_iproute(ipaddr_out) elif util.which('ifconfig'): # Fall back to net-tools if iproute2 is not present (ifcfg_out, _err) = util.subp(["ifconfig", "-a"], rcs=[0, 1]) devs = _netdev_info_ifconfig(ifcfg_out) else: LOG.warning( "Could not print networks: missing 'ip' and 'ifconfig' commands") if empty == "": return devs recurse_types = (dict, tuple, list) def fill(data, new_val="", empty_vals=("", b"")): """Recursively replace 'empty_vals' in data (dict, tuple, list) with new_val""" if isinstance(data, dict): myiter = data.items() elif isinstance(data, (tuple, list)): myiter = enumerate(data) else: raise TypeError("Unexpected input to fill") for key, val in myiter: if val in empty_vals: data[key] = new_val elif isinstance(val, recurse_types): fill(val, new_val) fill(devs, new_val=empty) return devs def _netdev_route_info_iproute(iproute_data): """ Get network route dicts from ip route info. @param iproute_data: Output string from ip route command. @returns: A dict containing ipv4 and ipv6 route entries as lists. Each item in the list is a route dictionary representing destination, gateway, flags, genmask and interface information. """ routes = {} routes['ipv4'] = [] routes['ipv6'] = [] entries = iproute_data.splitlines() default_route_entry = { 'destination': '', 'flags': '', 'gateway': '', 'genmask': '', 'iface': '', 'metric': ''} for line in entries: entry = copy(default_route_entry) if not line: continue toks = line.split() flags = ['U'] if toks[0] == "default": entry['destination'] = "0.0.0.0" entry['genmask'] = "0.0.0.0" else: if '/' in toks[0]: (addr, cidr) = toks[0].split("/") else: addr = toks[0] cidr = '32' flags.append("H") entry['genmask'] = net_prefix_to_ipv4_mask(cidr) entry['destination'] = addr entry['genmask'] = net_prefix_to_ipv4_mask(cidr) entry['gateway'] = "0.0.0.0" for i in range(len(toks)): if toks[i] == "via": entry['gateway'] = toks[i + 1] flags.insert(1, "G") if toks[i] == "dev": entry["iface"] = toks[i + 1] if toks[i] == "metric": entry['metric'] = toks[i + 1] entry['flags'] = ''.join(flags) routes['ipv4'].append(entry) try: (iproute_data6, _err6) = util.subp( ["ip", "--oneline", "-6", "route", "list", "table", "all"], rcs=[0, 1]) except util.ProcessExecutionError: pass else: entries6 = iproute_data6.splitlines() for line in entries6: entry = {} if not line: continue toks = line.split() if toks[0] == "default": entry['destination'] = "::/0" entry['flags'] = "UG" else: entry['destination'] = toks[0] entry['gateway'] = "::" entry['flags'] = "U" for i in range(len(toks)): if toks[i] == "via": entry['gateway'] = toks[i + 1] entry['flags'] = "UG" if toks[i] == "dev": entry["iface"] = toks[i + 1] if toks[i] == "metric": entry['metric'] = toks[i + 1] if toks[i] == "expires": entry['flags'] = entry['flags'] + 'e' routes['ipv6'].append(entry) return routes def _netdev_route_info_netstat(route_data): routes = {} routes['ipv4'] = [] routes['ipv6'] = [] entries = route_data.splitlines() for line in entries: if not line: continue toks = line.split() # FreeBSD shows 6 items in the routing table: # Destination Gateway Flags Refs Use Netif Expire # default 10.65.0.1 UGS 0 34920 vtnet0 # # Linux netstat shows 2 more: # Destination Gateway Genmask Flags Metric Ref Use Iface # 0.0.0.0 10.65.0.1 0.0.0.0 UG 0 0 0 eth0 if (len(toks) < 6 or toks[0] == "Kernel" or toks[0] == "Destination" or toks[0] == "Internet" or toks[0] == "Internet6" or toks[0] == "Routing"): continue if len(toks) < 8: toks.append("-") toks.append("-") toks[7] = toks[5] toks[5] = "-" entry = { 'destination': toks[0], 'gateway': toks[1], 'genmask': toks[2], 'flags': toks[3], 'metric': toks[4], 'ref': toks[5], 'use': toks[6], 'iface': toks[7], } routes['ipv4'].append(entry) try: (route_data6, _err6) = util.subp( ["netstat", "-A", "inet6", "--route", "--numeric"], rcs=[0, 1]) except util.ProcessExecutionError: pass else: entries6 = route_data6.splitlines() for line in entries6: if not line: continue toks = line.split() if (len(toks) < 7 or toks[0] == "Kernel" or toks[0] == "Destination" or toks[0] == "Internet" or toks[0] == "Proto" or toks[0] == "Active"): continue entry = { 'destination': toks[0], 'gateway': toks[1], 'flags': toks[2], 'metric': toks[3], 'ref': toks[4], 'use': toks[5], 'iface': toks[6], } # skip lo interface on ipv6 if entry['iface'] == "lo": continue # strip /128 from address if it's included if entry['destination'].endswith('/128'): entry['destination'] = re.sub( r'\/128$', '', entry['destination']) routes['ipv6'].append(entry) return routes def route_info(): routes = {} if util.which('ip'): # Try iproute first of all (iproute_out, _err) = util.subp(["ip", "-o", "route", "list"]) routes = _netdev_route_info_iproute(iproute_out) elif util.which('netstat'): # Fall back to net-tools if iproute2 is not present (route_out, _err) = util.subp( ["netstat", "--route", "--numeric", "--extend"], rcs=[0, 1]) routes = _netdev_route_info_netstat(route_out) else: LOG.warning( "Could not print routes: missing 'ip' and 'netstat' commands") return routes def netdev_pformat(): lines = [] empty = "." try: netdev = netdev_info(empty=empty) except Exception as e: lines.append( util.center( "Net device info failed ({error})".format(error=str(e)), '!', 80)) else: if not netdev: return '\n' fields = ['Device', 'Up', 'Address', 'Mask', 'Scope', 'Hw-Address'] tbl = SimpleTable(fields) for (dev, data) in sorted(netdev.items()): for addr in data.get('ipv4'): tbl.add_row( (dev, data["up"], addr["ip"], addr["mask"], addr.get('scope', empty), data["hwaddr"])) for addr in data.get('ipv6'): tbl.add_row( (dev, data["up"], addr["ip"], empty, addr.get("scope6", empty), data["hwaddr"])) if len(data.get('ipv6')) + len(data.get('ipv4')) == 0: tbl.add_row((dev, data["up"], empty, empty, empty, data["hwaddr"])) netdev_s = tbl.get_string() max_len = len(max(netdev_s.splitlines(), key=len)) header = util.center("Net device info", "+", max_len) lines.extend([header, netdev_s]) return "\n".join(lines) + "\n" def route_pformat(): lines = [] try: routes = route_info() except Exception as e: lines.append( util.center( 'Route info failed ({error})'.format(error=str(e)), '!', 80)) util.logexc(LOG, "Route info failed: %s" % e) else: if routes.get('ipv4'): fields_v4 = ['Route', 'Destination', 'Gateway', 'Genmask', 'Interface', 'Flags'] tbl_v4 = SimpleTable(fields_v4) for (n, r) in enumerate(routes.get('ipv4')): route_id = str(n) tbl_v4.add_row([route_id, r['destination'], r['gateway'], r['genmask'], r['iface'], r['flags']]) route_s = tbl_v4.get_string() max_len = len(max(route_s.splitlines(), key=len)) header = util.center("Route IPv4 info", "+", max_len) lines.extend([header, route_s]) if routes.get('ipv6'): fields_v6 = ['Route', 'Destination', 'Gateway', 'Interface', 'Flags'] tbl_v6 = SimpleTable(fields_v6) for (n, r) in enumerate(routes.get('ipv6')): route_id = str(n) if r['iface'] == 'lo': continue tbl_v6.add_row([route_id, r['destination'], r['gateway'], r['iface'], r['flags']]) route_s = tbl_v6.get_string() max_len = len(max(route_s.splitlines(), key=len)) header = util.center("Route IPv6 info", "+", max_len) lines.extend([header, route_s]) return "\n".join(lines) + "\n" def debug_info(prefix='ci-info: '): lines = [] netdev_lines = netdev_pformat().splitlines() if prefix: for line in netdev_lines: lines.append("%s%s" % (prefix, line)) else: lines.extend(netdev_lines) route_lines = route_pformat().splitlines() if prefix: for line in route_lines: lines.append("%s%s" % (prefix, line)) else: lines.extend(route_lines) return "\n".join(lines) # vi: ts=4 expandtab
Close