PK œqhYî¶J‚ßF ßF ) nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/
Dir : /proc/self/root/opt/saltstack/salt/lib/python3.10/site-packages/salt/roster/ |
Server: Linux ngx353.inmotionhosting.com 4.18.0-553.22.1.lve.1.el8.x86_64 #1 SMP Tue Oct 8 15:52:54 UTC 2024 x86_64 IP: 209.182.202.254 |
Dir : //proc/self/root/opt/saltstack/salt/lib/python3.10/site-packages/salt/roster/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