from pexpect import pxssh
import getpass
try:
s = pxssh.pxssh()
hostname = input('hostname: ')
username = input('username: ')
password = getpass.getpass('password: ')
s.login(hostname, username, password)
s.sendline('uptime') # run a command
s.prompt() # match the prompt
print(s.before) # print everything before the prompt.
s.sendline('ls -l')
s.prompt()
print(s.before)
s.sendline('df')
s.prompt()
print(s.before)
s.logout()
except pxssh.ExceptionPxssh as e:
print("pxssh failed on login.")
print(e)
below is the o/p:
b'uptime\r\n 22:27:16 up 45 min, 4 users, load average: 0.02, 0.05, 0.00\r\n'
b'ls -l\r\ntotal 60\r\ndrwxr-xr-x 2 pi pi 4096 Mar 3 16:25 \x1b[0m\x1b[01;34mDesktop\x1b[0m\r\ndrwxr-xr-x 6 pi pi 4096 Apr 5 13:13 \x1b[01;34mDocuments\x1b[0m\r\ndrwxr-xr-x 3 pi pi 4096 Apr 13 05:51 \x1b[01;34mDownloads\x1b[0m\r\ndrwxr-xr-x 2 pi pi 4096 Mar 3 16:25 \x1b[01;34mMusic\x1b[0m\r\ndrwxr-xr-x 3 pi pi 4096 Jun 14 15:00 \x1b[01;34moldconffiles\x1b[0m\r\n-rw-r--r-- 1 pi pi 592 Jun 23 22:26 pexpected_ssh.py\r\ndrwxr-xr-x 4 pi pi 4096 Apr 13 06:55 \x1b[01;34mphantomjs-on-raspberry\x1b[0m\r\ndrwxr-xr-x 2 pi pi 4096 Mar 3 16:25 \x1b[01;34mPictures\x1b[0m\r\ndrwxr-xr-x 2 pi pi 4096 Mar 3 16:25 \x1b[01;34mPublic\x1b[0m\r\ndrwxr-xr-x 6 pi pi 4096 Apr 17 20:30 \x1b[01;34mPytest1\x1b[0m\r\ndrwxr-xr-x 2 pi pi 4096 Apr 11 21:56 \x1b[01;34mpython1\x1b[0m\r\ndrwxr-xr-x 2 pi pi 4096 Mar 3 15:55 \x1b[01;34mpython_games\x1b[0m\r\ndrwxr-xr-x 2 pi pi 4096 Mar 3 16:25 \x1b[01;34mTemplates\x1b[0m\r\ndrwxr-xr-x 2 pi pi 4096 Apr 11 14:57 \x1b[01;34mtest\x1b[0m\r\ndrwxr-xr-x 2 pi pi 4096 Mar 3 16:25 \x1b[01;34mVideos\x1b[0m\r\n'
b'df\r\nFilesystem 1K-blocks Used Available Use% Mounted on\r\n/dev/root 29710268 6264956 22178580 23% /\r\ndevtmpfs 468148 0 468148 0% /dev\r\ntmpfs 472756 0 472756 0% /dev/shm\r\ntmpfs 472756 6504 466252 2% /run\r\ntmpfs 5120 4 5116 1% /run/lock\r\ntmpfs 472756 0 472756 0% /sys/fs/cgroup\r\n/dev/mmcblk0p1 63503 21390 42113 34% /boot\r\ntmpfs 94552 0 94552 0% /run/user/1000\r\n/dev/sda1 15289328 2940992 12348336 20% /media/pi/SHUBHAYAN1\r\n'
pi@raspberrypi:~ $
With Python 3.x the s.before
is of bytes
instead of str
. You need to convert from bytes
to str
:
v = s.before.decode()
print(v)
The default encoding for decode()
is utf-8
. You need to specify the correct encoding if it's not in utf-8
. E.g.:
v = s.before.decode(encoding='latin1')
See Python3's Unicode HOWTO for more details.