003 File Manager
Current Path:
/usr/local/lib/python3.8/site-packages/salt/roster
usr
/
local
/
lib
/
python3.8
/
site-packages
/
salt
/
roster
/
📁
..
📄
__init__.py
(3.53 KB)
📁
__pycache__
📄
ansible.py
(3.87 KB)
📄
cache.py
(7.27 KB)
📄
cloud.py
(3.61 KB)
📄
clustershell.py
(1.52 KB)
📄
dir.py
(3.32 KB)
📄
flat.py
(933 B)
📄
range.py
(2.25 KB)
📄
scan.py
(2.04 KB)
📄
sshconfig.py
(4.35 KB)
📄
terraform.py
(5.02 KB)
Editing: scan.py
""" Scan a netmask or ipaddr for open ssh ports """ import copy import logging import socket import salt.utils.network from salt._compat import ipaddress log = logging.getLogger(__name__) def targets(tgt, tgt_type="glob", **kwargs): """ Return the targets from the flat yaml file, checks opts for location but defaults to /etc/salt/roster """ rmatcher = RosterMatcher(tgt, tgt_type) return rmatcher.targets() class RosterMatcher: """ Matcher for the roster data structure """ def __init__(self, tgt, tgt_type): self.tgt = tgt self.tgt_type = tgt_type def targets(self): """ Return ip addrs based on netmask, sitting in the "glob" spot because it is the default """ addrs = [] ret = {} ports = __opts__["ssh_scan_ports"] if not isinstance(ports, list): # Comma-separate list of integers ports = list(map(int, str(ports).split(","))) if self.tgt_type == "list": tgts = self.tgt else: tgts = [self.tgt] for tgt in tgts: try: addrs.append(ipaddress.ip_address(tgt)) except ValueError: try: addrs.extend(ipaddress.ip_network(tgt).hosts()) except ValueError: pass for addr in addrs: addr = str(addr) ret[addr] = copy.deepcopy(__opts__.get("roster_defaults", {})) log.trace("Scanning host: %s", addr) for port in ports: log.trace("Scanning port: %s", port) try: sock = salt.utils.network.get_socket(addr, socket.SOCK_STREAM) sock.settimeout(float(__opts__["ssh_scan_timeout"])) sock.connect((addr, port)) sock.shutdown(socket.SHUT_RDWR) sock.close() ret[addr].update({"host": addr, "port": port}) except OSError: pass return ret
Upload File
Create Folder