MCPcopy
hub / github.com/jtesta/ssh-audit / connect

Method connect

src/ssh_audit/ssh_socket.py:154–174  ·  view source on GitHub ↗

Returns None on success, or an error string.

(self)

Source from the content-addressed store, hash-verified

152 self.__sock = c
153
154 def connect(self) -> Optional[str]:
155 '''Returns None on success, or an error string.'''
156 err = None
157 s = None
158 try:
159 for af, addr in self._resolve():
160 s = socket.socket(af, socket.SOCK_STREAM)
161 s.settimeout(self.__timeout)
162 self.__outputbuffer.d(("Connecting to %s:%d..." % ('[%s]' % addr[0] if Utils.is_ipv6_address(addr[0]) else addr[0], addr[1])), write_now=True)
163 s.connect(addr)
164 self.__sock = s
165 return None
166 except socket.error as e:
167 err = e
168 self._close_socket(s)
169 if err is None:
170 errm = 'host {} has no DNS records'.format(self.__host)
171 else:
172 errt = (self.__host, self.__port, err)
173 errm = 'cannot connect to {} port {}: {}'.format(*errt)
174 return '[exception] {}'.format(errm)
175
176 def get_banner(self, sshv: int = 2) -> Tuple[Optional['Banner'], List[str], Optional[str]]:
177 self.__outputbuffer.d('Getting banner...', write_now=True)

Callers 4

auditFunction · 0.95
_worker_processMethod · 0.45
reconnectMethod · 0.45
perform_testMethod · 0.45

Calls 6

_resolveMethod · 0.95
_close_socketMethod · 0.95
socketMethod · 0.80
settimeoutMethod · 0.80
dMethod · 0.80
is_ipv6_addressMethod · 0.80

Tested by 2

reconnectMethod · 0.36
perform_testMethod · 0.36