|
|
|
@ -71,6 +71,8 @@ class Gateway():
|
|
|
|
|
ftp = None
|
|
|
|
|
socket = None # TCP socket for SSH
|
|
|
|
|
ssh = None # SSH session
|
|
|
|
|
login = 'root' # default username
|
|
|
|
|
passw = 'root' # password for def user
|
|
|
|
|
|
|
|
|
|
def __init__(self, timeout = 4, verbose = 2, detect_device = True, load_cfg = True):
|
|
|
|
|
self.verbose = verbose
|
|
|
|
@ -311,7 +313,7 @@ class Gateway():
|
|
|
|
|
self.socket.settimeout(None) # enable blocking mode
|
|
|
|
|
self.ssh = ssh2.session.Session()
|
|
|
|
|
self.ssh.handshake(self.socket)
|
|
|
|
|
self.ssh.userauth_password('root', 'root')
|
|
|
|
|
self.ssh.userauth_password(self.login, self.passw)
|
|
|
|
|
self.ssh.set_blocking(True)
|
|
|
|
|
self.ssh.set_timeout(int(self.timeout * 1000))
|
|
|
|
|
return self.ssh
|
|
|
|
@ -324,17 +326,38 @@ class Gateway():
|
|
|
|
|
|
|
|
|
|
def get_telnet(self, verbose = 0):
|
|
|
|
|
try:
|
|
|
|
|
tn = telnetlib.Telnet(self.ip_addr)
|
|
|
|
|
tn.read_until(b"login: ")
|
|
|
|
|
tn.write(b"root\n")
|
|
|
|
|
tn.read_until(b"Password: ")
|
|
|
|
|
tn.write(b"root\n")
|
|
|
|
|
tn.read_until(b"root@XiaoQiang:~#")
|
|
|
|
|
tn = telnetlib.Telnet(self.ip_addr, timeout=4)
|
|
|
|
|
except Exception as e:
|
|
|
|
|
if verbose:
|
|
|
|
|
die("TELNET not responding (IP: {})".format(self.ip_addr))
|
|
|
|
|
return None
|
|
|
|
|
try:
|
|
|
|
|
p_login = b'login: '
|
|
|
|
|
p_passw = b'Password: '
|
|
|
|
|
prompt = "{}@XiaoQiang:(.*?)#".format(self.login).encode('ascii')
|
|
|
|
|
idx, obj, output = tn.expect([p_login, prompt], timeout=2)
|
|
|
|
|
if idx < 0:
|
|
|
|
|
raise Exception('')
|
|
|
|
|
if idx > 0:
|
|
|
|
|
tn.prompt = obj.group()
|
|
|
|
|
return tn
|
|
|
|
|
tn.write("{}\n".format(self.login).encode('ascii'))
|
|
|
|
|
idx, obj, output = tn.expect([p_passw, prompt], timeout=2)
|
|
|
|
|
if idx < 0:
|
|
|
|
|
raise Exception('')
|
|
|
|
|
if idx > 0:
|
|
|
|
|
tn.prompt = obj.group()
|
|
|
|
|
return tn
|
|
|
|
|
tn.write("{}\n".format(self.passw).encode('ascii'))
|
|
|
|
|
idx, obj, output = tn.expect([prompt], timeout=2)
|
|
|
|
|
if idx < 0:
|
|
|
|
|
raise Exception('')
|
|
|
|
|
tn.prompt = obj.group()
|
|
|
|
|
return tn
|
|
|
|
|
except Exception as e:
|
|
|
|
|
#print(e)
|
|
|
|
|
if verbose:
|
|
|
|
|
die("TELNET not responding (IP: {})".format(self.ip_addr))
|
|
|
|
|
die("Can't login to TELNET (IP: {})".format(self.ip_addr))
|
|
|
|
|
return None
|
|
|
|
|
|
|
|
|
|
def get_ftp(self, verbose = 0):
|
|
|
|
@ -347,7 +370,7 @@ class Gateway():
|
|
|
|
|
self.shutdown()
|
|
|
|
|
try:
|
|
|
|
|
#timeout = 10 if self.timeout < 10 else self.timeout
|
|
|
|
|
self.ftp = ftplib.FTP(self.ip_addr, user='root', passwd='root', timeout=self.timeout)
|
|
|
|
|
self.ftp = ftplib.FTP(self.ip_addr, user=self.login, passwd=self.passw, timeout=self.timeout)
|
|
|
|
|
self.ftp.voidcmd("NOOP")
|
|
|
|
|
return self.ftp
|
|
|
|
|
except Exception:
|
|
|
|
@ -394,7 +417,7 @@ class Gateway():
|
|
|
|
|
try:
|
|
|
|
|
channel.wait_eof()
|
|
|
|
|
except ssh2.exceptions.Timeout:
|
|
|
|
|
die("SSH execute command timedout! CMD: \"{}\"".format(cmd))
|
|
|
|
|
die("SSH execute command timed out! CMD: \"{}\"".format(cmd))
|
|
|
|
|
if timeout is not None:
|
|
|
|
|
ssh.set_timeout(saved_timeout)
|
|
|
|
|
try:
|
|
|
|
@ -406,7 +429,7 @@ class Gateway():
|
|
|
|
|
else:
|
|
|
|
|
cmd = (cmd + '\n').encode('ascii')
|
|
|
|
|
tn.write(cmd)
|
|
|
|
|
tn.read_until(b"root@XiaoQiang:~#")
|
|
|
|
|
tn.read_until(tn.prompt, timeout = 4 if timeout is None else timeout)
|
|
|
|
|
if not self.use_ssh:
|
|
|
|
|
tn.write(b"exit\n")
|
|
|
|
|
return True
|
|
|
|
|