python—使用pxssh模块模拟ssh登录linux主机
1、配置环境,
客户端192.168.40.128,服务器192.168.40.129
客户端ssh登录服务器能够成功
root@kali:~/python/anquangongji# ssh root@192.168.40.129
Enter passphrase for key '/root/.ssh/id_dsa':
Linux kali 3.18.0-kali1-686-pae #1 SMP Debian 3.18.3-1~kali4 (2015-01-22) i686
The programs included with the Kali GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Kali GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Tue Dec 26 21:58:07 2017 from 192.168.40.128
root@kali:~# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0c:29:ee:b2:1f
inet addr:192.168.40.129 Bcast:192.168.40.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:feee:b21f/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:13045 errors:0 dropped:0 overruns:0 frame:0
TX packets:7781 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:14386519 (13.7 MiB) TX bytes:636403 (621.4 KiB)
Interrupt:19 Base address:0x2000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:444 errors:0 dropped:0 overruns:0 frame:0
TX packets:444 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:26640 (26.0 KiB) TX bytes:26640 (26.0 KiB)
root@kali:~#
root@kali:~# exit
登出
Connection to 192.168.40.129 closed.
root@kali:~/python/anquangongji#
2、目录与文件配置
root@kali:~/python/anquangongji# pwd
/root/python/anquangongji
root@kali:~/python/anquangongji# ls
cmd.log pingip_false.txt scanftpbanner.py
creakzipfile.py pingip_true.txt scanhostsingalport.py
dictionaryzip.txt portscannernmapinternet.py test.zip
pexpectftplogin.py portscannernmap.py text.txt
pexpectlog.py portscanner.py vulnbanners.txt
pexpectsshcommand.py portscannerthread.py
pexpectssh.py pxsshlgin.py
root@kali:~/python/anquangongji#
3、脚本源码:
root@kali:~/python/anquangongji#
root@kali:~/python/anquangongji# vi pxsshlgin.py
root@kali:~/python/anquangongji#
root@kali:~/python/anquangongji# cat pxsshlgin.py
#!/usr/bin/python
# --*-- coding:utf-8 --*--
import pxssh
import getpass
try:
s = pxssh.pxssh()#调用构造函数,创建一个pxssh 类的对象
hostname = raw_input("Hostname: ")#获得用户指定ssh主机域名
username = raw_input("Username: ")#获得用户指定ssh主机用户名
password =getpass.getpass("Pasword: ")#获得用户指定ssh主机密码
s.login(hostname,username,password,original_prompt="[$#>]")#利用pxssh类的login方法进行ssh登录,原始prompt为'$','#'或'>
s.sendline("pwd")#发送命令"pwd"
s.prompt()#匹配prompt
print s.before#将prompt前所有内容打印出,即命令"pwd"的执行结果
s.sendline("ifconfig")#发送命令"ifconfig"
s.prompt()#匹配prompt
print s.before#将prompt前所有内容打印出,即命令"ifconfig"的执行结果
s.logout()#退出ssh session
except pxssh.ExceptionPxssh,e:
print "pxssh failed on login"
print str(a)
root@kali:~/python/anquangongji#
4、脚本运行情况:
root@kali:~/python/anquangongji# python pxsshlgin.py
Hostname: 192.168.40.129
Username: root
Pasword:
pwd
/root
ifconfig
eth0 Link encap:Ethernet HWaddr 00:0c:29:ee:b2:1f
inet addr:192.168.40.129 Bcast:192.168.40.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:feee:b21f/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:12681 errors:0 dropped:0 overruns:0 frame:0
TX packets:7526 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:14101634 (13.4 MiB) TX bytes:604422 (590.2 KiB)
Interrupt:19 Base address:0x2000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:432 errors:0 dropped:0 overruns:0 frame:0
TX packets:432 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:25920 (25.3 KiB) TX bytes:25920 (25.3 KiB)
root@kali:~/python/anquangongji# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0c:29:65:7c:6d
inet addr:192.168.40.128 Bcast:192.168.40.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe65:7c6d/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:258224 errors:0 dropped:0 overruns:0 frame:0
TX packets:315736 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:109914645 (104.8 MiB) TX bytes:25059233 (23.8 MiB)
Interrupt:19 Base address:0x2000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:8685 errors:0 dropped:0 overruns:0 frame:0
TX packets:8685 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:4831901 (4.6 MiB) TX bytes:4831901 (4.6 MiB)
root@kali:~/python/anquangongji#