pythonsshwindows
1. 小米路由器mini丢失SN无法获取root权限怎么办
作为不同网络之间互相连接的枢纽,路由器系统构成了基于TCP/IP 的国际互联网络Internet 的主体脉络,也可以说,路由器构成了Internet的骨架。没事折腾小米路由器发现sn丢失,没办法获取root权限,这样就没法通过SSH远程连接小米mini路由系统,该怎么办呢?下面我我们就来看看详细的解决办法,需要的朋友可以参考下
方法步骤
一、SN丢失会怎么样
1、SN丢失会导致小米mini路由器无法识别设备的型号规格,无法绑定小米账号,因此就无法获取相应设备的root密码及SSH工具。导致小米mini路由器无法获取root权限,这样就没法通过SSH远程连接小米mini路由系统。
二、官方固件用户
1、如果你现在用的是小米mini官方固件的话,你需要先获取SSH权限,不然就无法刷写第三方固件,但是我前面又说了无法获取root权限,这不是自相矛盾么?其实这里需要利用小米固件的一个漏洞,那就是低版本固件还能通过stok来破译,但是此方法只能获取权限,无法绑定小米APP及小米帐户。
2、进小米官方下载小米mini路由第版本固件。拉到最下面,选择“小米路由器mini-稳定版完整包”中的固件下载,然后进入小米后台:192.168.31.1。在“常用设置“--”系统状态”下选择手动升级固件,将低版本固件刷入小米mini路由器。
3、接下来我们需要用到python工具,,我用的是windows8.1系统,试过了 python的32和64位版都没有安装成功,研究了很久终于让我找到了一款python-3.4.3.msi的windows installer程序包,直接双击安装就可以了。
4、在mini.py目录下打开“打开命令提示符”,输入:mini.py,系统提示需要安装requests模块。输入命令:pip install requests安装requests模块,系统提示安装完成。
5、再登陆小米WEB后台,在地址栏可以找到stok值,把它复制下来(这里需要注意的是stok值每一次登录都不一样)。再次执行:mini.py,然后在弹出的Paste your session here:后输入刚才复制的stok值,enter键执行。最后重启路由器即可获取root权限了,有了root权限我们才可以刷第三方的固件的 !
三、刷第三方固件
1、SN信息一般保留在Bdata分区,而Bdata分区在小米官方固件下面是只读状态,无法写入信息,所以想修改Bdata信息就需要使用第三方固件,这里我把PandoraBox(PandoraBox是基于Openwrt固件开发的)刷入小米mini路由器。使用WinSCP工具把固件上传到路由/tmp 目录下
2、使用Putty软件远程连接小米mini路由器,然后输入命令:cd /tmp。接着执行命令:mtd -r write /tmp/PandoraBox.bin OS1 对PandoraBox.bin固件进行写入,等待系统刷写完成即可。自动重启后,默认ip改为:192.168.1.1 用户名:root 密码:admin
四、修改Bdata信息
1、使用Winhex打开Bdata.bin文件,在图中框选的位置将路由器信息写入,model=R1CM是型号。bdata set color=101就是设置为白色,其他颜色可以根据如下定义修改:
黑色100 -- 白色101 -- 橘色102 -- 绿色103 -- 蓝色104 -- 粉色105
CountryCode是国家代码(CN HK TW EN)
SN 产品机器码(这里就是我们的重点,填写你路由背面的序列号)
2、将修改好的Bdata.bin传到/tmp目录,我把它取名叫xiaomi.bin。(bdata.bin文件网上可以找到,也可以找我要)。在putty中使用mtd程序刷入Bdata,输入以下命令:
cd /tmp
mtd write /tmp/xiaomi.bin culiang-Bdata
没弹出错误就是刷入成功了,这样我们就把小米的SN导入到了小米路由器中了,现在再刷回官方固件就可以正常获取SSH权限及APP帐户绑定了!
相关阅读:路由器安全特性关键点
由于路由器是网络中比较关键的设备,针对网络存在的各种安全隐患,路由器必须具有如下的安全特性:
(1)可靠性与线路安全 可靠性要求是针对故障恢复和负载能力而提出来的。对于路由器来说,可靠性主要体现在接口故障和网络流量增大两种情况下,为此,备份是路由器不可或缺的手段之一。当主接口出现故障时,备份接口自动投入工作,保证网络的正常运行。当网络流量增大时,备份接口又可承当负载分担的任务。
(2)身份认证路由器中的身份认证主要包括访问路由器时的身份认证、对端路由器的身份认证和路由信息的身份认证。
(3)访问控制对于路由器的访问控制,需要进行口令的分级保护。有基于IP地址的访问控制和基于用户的访问控制。
(4)信息隐藏与对端通信时,不一定需要用真实身份进行通信。通过地址转换,可以做到隐藏网内地址,只以公共地址的方式访问外部网络。除了由内部网络首先发起的连接,网外用户不能通过地址转换直接访问网内资源。
(5)数据加密
为了避免因为数据窃听而造成的信息泄漏,有必要对所传输的信息进行加密,只有与之通信的对端才能对此密文进行解密。通过对路由器所发送的报文进行加密,即使在Internet上进行传输,也能保证数据的私有性、完整性以及报文内容的真实性。
(6)攻击探测和防范
路由器作为一个内部网络对外的接口设备,是攻击者进入内部网络的第一个目标。如果路由器不提供攻击检测和防范,则也是攻击者进入内部网络的一个桥梁。在路由器上提供攻击检测,可以防止一部分的攻击。
(7)安全管理
2. 如何进行服务器的批量管理以及python 的paramiko的模块
最近对公司的通道机账号进行改造管理,全面的更加深入的理解了公司账号管理的架构。(注:基本上所有的机器上的ssh不能使用,只有部分机器能够使用。为了安全的角度考虑,安装的不是公版的ssh,而都是定制版的ssh,(限制了机器上的源IP地址即可))。
自动化管理服务器,有两种方法:
第一种方法,是我们公司自己开发的(服务器大概是3W台),基本上服务器之间不能够通过ssh互相连通,只能是一台服务器能够连到所有的服务器上,这台服务器我们称之为通道机(也叫堡垒机),当我们想登某台服务器的时候,需要先登上这台通道机,然后经过一系列的验证之后,就能自动的登上你要登到的服务器上。
并且我们自己开发了一套叫做通道机API的方式,来管理3W台服务器,比如收集各台服务器的信息等。其这个API的本质就是使用的是POST的方式将命令post到目标机上,然后返回结果进行处理即可。这是一个大概的思想。
第二种方法,就是使用ssh的协议进行管理,使用python的paramiko来进行管理,下面会进行介绍:
有一些想法,可以使用python的paramiko模块来进行管理名下服务器,前提是能够ssh到各个服务器上。
下面对这个paramiko的模块做个简单的介绍和分享:
1.简介:
paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接。
由于使用的是python这样的能够跨平台运行的语言,所以所有python支持的平台,如linux, Solaris, BSD, MacOS X,Windows等,paramiko都可以支持,因此,如果
需要使用SSH从一个平台连接到另外一个平台,进行一系列的操作时,paramiko是最佳工具之一。
举个常见的例子,现有这样的需求:需要使用windows客户端,远程连接到Linux服务器,查看上面的日志状态,大家通常使用的方法会是:
1:用telnet
2:用PUTTY
3:用WinSCP
4:用XManager等…
那现在如果需求又增加一条,要从服务器上下载文件,该怎么办?那常用的办法可能会是:
1:Linux上安装ftp并配置
2:Linux上安装Sambe并配置…
大家会发现,常见的解决方法都会需要对远程服务器必要的配置,如果远程服务器只有一两台还好说,如果有N台,还需要逐台进行配置,或者需要使用代码进行以上操作
时,上面的办法就不太方便了。
使用paramiko可以很好的解决以上问题,比起前面的方法,它仅需要在本地上安装相应的软件(python以及PyCrypto),对远程服务器没有配置要求,对于连接多台服
务器,进行复杂的连接操作特别有帮助。
2.使用的几个简单的案例:
下面是两种使用paramiko连接到linux服务器的代码:
方式一:
1 ssh = paramiko.SSHClient()2 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())3 ssh.connect("IP地址",22,"用户名","密码")
上面的第二行代码的作用是允许连接不在know_hosts文件中的主机。
方式二:
1 t = paramiko.Transport(("IP地址","端口"))2 t.connect(username = “用户名”, password = “口令”)3 如果连接远程主机需要提供密钥,上面第二行代码可改成:4 t.connect(username = “用户名”, password = “口令”, hostkey=”密钥”)
3.一些简单的例子:
如果linux服务器开放了22端口,在windows端,我们可以使用paramiko远程连接到该服务器,并执行任意命令,然后通过 print或其它方式得到该结果。
3. Python能用来做什么
Python 语言主要有以下用途:
1) 简单:Python 是一种代表简单主义思想的语言。阅读一个良好的 Python 程序就感觉像是在读英语一样,尽管这个英语的要求非常严格。Python 的这种伪代码本质是其优点之一,使用户能够专注于解决问题而不是去搞明白语言本身。
2) 易学:Python 有极其简单的语法,非常容易上手。
3) 免费、开源:Python 是 FLOSS(自由/开源软件)之一。简单来说,用户可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。FLOSS 是基于一个团体分享知识的概念,这也是为什么 Python 如此优秀的原因之一:它由一群希望看到 Python 更加优秀的人创造,并被他们不断改进。
4) 高层语言:使用 Python 语言编写程序时,不用考虑如何管理程序使用的内存等底层细节。
5) 可移植性强:由于它的开源本质,Python 已经被移植在许多平台上。如果 Python 程序没有使用依赖于系统的特性,那么程序不用修改就可以在下述任意平台上面运行。这些平台包括 Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE、Pocket PC 和 Symbian。
6) 解释型语言:编译型语言(如 C 或 C++)源程序从源文件(即 C 或 C++ 语言)转换到二进制代码(即 0 和 1)的过程通过编译器和不同的标记、选项完成,当运行程序的时候,连接器把程序从硬盘复制到内存中并且运行。而 Python 程序不需要编译成二进制代码,直接从源代码运行程序。
在计算机内部,Python 解释器把源代码转换成字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。因此,用户不再需要操心如何编译程序、如何确保指定了正确的模块或包文件等细节,所有这一切使得使用 Python 更加简单。同时,由于只需要把 Python 程序拷贝到另外一台计算机上即可工作,这也使得 Python 程序更加易于移植。
7) 面向对象:Python 既支持面向过程的编程也支持面向对象的编程。在面向过程的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在面向对象的语言中,程序是由数据和功能组合而成的对象构建起来的。与其他语言(如 C++ 和 Java)相比,Python 以一种非常强大又简单的方式实现面向对象编程。
8) 可扩展性强:如果希望把一段关键代码运行得更快或希望某些算法不公开,可以使用 C 或 C++ 语言编写这部分程序,然后在 Python 程序中调用它们。
9) 可嵌入性强:可以把 Python 嵌入 C/C++ 程序,从而向用户提供脚本功能。
10) 丰富的扩展库:Python 扩展库很庞大,可以帮助处理包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV 文件、密码系统、GUI(图形用户界面)、Tk 以及其他与系统有关的操作。只要安装了 Python,所有这些功能都是可用的,这被称作 Python 的“功能齐全”理念。除了扩展库以外,还有许多其他高质量的库,如 wxPython、Twisted 和 Python 图像库等。
4. 如何使用ssh windows python
ws中使用的Pycrypto版本,
下载Python版本和操作系统对应的版本,直接安装即可。
注:如果是Win32bit + Python 2.7,则下载pycrypto-2.6.win32-py2.7.exe。
安装Paramiko模块
解压缩后,进入到解压缩的目录中执行python setup.py install进行安装。
使用示例
使用SSH登陆到远程主机执行命令。
import paramiko
def ssh_cmd(ip,port, cmd, user, passwd):
result = ""
try:
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(ip, port, user, passwd,timeout=3)
stdin, stdout, stderr =ssh.exec_command(cmd)
result = stdout.read()
ssh.close()
except:
print("ssh_cmd err.")
return result
5. ansible总结
ansible是一种自动化运维工具,基于paramiko开发的,并且基于模块化工作,Ansible是一种集成IT系统的配置管理、应用部署、执行特定任务的开源平台,它是基于python语言,由Paramiko和PyYAML两个关键模块构建。集合了众多运维工具的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能.ansible是基于模块工作的,本身没有批量部署的能力.真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架.ansible不需要在远程主机上安装client/agents,因为它们是基于ssh来和远程主机通讯的.
ansible被定义为配置管理工具,配置管理工具通常具有以下功能:
常用的自动化运维工具技术特性比较:
ansible系统由控制主机和被管理主机组成,控制主机不支持windows平台
部署简单, 只需要在控制主机上部署ansible环境,被控制端上只要求安装ssh和python 2.5以上版本,这个对于类unix系统来说相当与无需配置.
Ansible任务执行模式分为以下两种:
ansible配置文件查找顺序
ansible配置文件
ansible 有许多参数,下面我们列出一些常见的参数:
ansible的主要功用在于批量主机操作,为了便捷地使用其中的部分主机,可以在inventory file中将其分组命名。默认的inventory file为/etc/ansible/hosts。
inventory file可以有多个,且也可以通过Dynamic Inventory来动态生成。
Inventory文件格式:
inventory其他的参数
ansible通过ssh实现配置管理、应用部署、任务执行等功能,因此,需要事先配置ansible端能基于密钥认证的方式联系各被管理节点。
ansible命令使用语法:
例如:
可以通过 ansible-doc -l 列出所有可用的mole,常用的mole有:
ansible -s <mole-name> 可以查看指定mole的用法,或者参看 官方帮助文档 :
playbook是由一个或多个“play”组成的列表。play的主要功能在于将事先归并为一组的主机装扮成事先通过ansible中的task定义好的角色。从根本上来讲,所谓task无非是调用ansible的一个mole。将多个play组织在一个playbook中,即可以让它们联同起来按事先编排的机制同唱一台大戏。
下面是一个简单示例:
playbooks的组成部分
执行过程:
playbook安装配置apache实战
ansilbe自1.2版本引入的新特性,用于层次性、结构化地组织playbook。roles能够根据层次型结构自动装载变量文件、tasks以及handlers等。要使用roles只需要在playbook中使用include指令即可。简单来讲,roles就是通过分别将变量、文件、任务、模块及处理器放置于单独的目录中,并可以便捷地include它们的一种机制。角色一般用于基于主机构建服务的场景中,但也可以是用于构建守护进程等场景中。
一个roles的案例如下所示:
在playbook中,可以这样使用roles:
也可以向roles传递参数:
也可以用条件来使用roles:
ansible运行playbook时会启动很多ssh连接来执行复制文件,运行命令这样的操作.openssh支持这样一个优化,叫做ssh Multiplexing,当使用这个ssh Multiplexing的时候,多个连接到相同主机的ssh回话会共享相同的TCP连接,这样就只有第一次连接的时候需要进行TCP三次握手.
ansible会默认使用ssh Multiplexing特性,一般不需要更改配置,相关的配置项为:
ansible执行过程中,他会基于调用的模块生成一个python脚本,然后将python脚本复制到主机上,最后执行脚本.ansible支持一个优化,叫做pipelining,在这个模式下ansible执行脚本时并不会去复制它,而是通过管道传递给ssh会话,这会让ansible的ssh会话从2个减少到1个,从而节省时间.
pipelining默认是关闭的, 因为他需要确认被管理主机上的/etc/sudoers文件中的 requiretty 没有启用, 格式如下:
ansible开启pipelining方法, 修改ansible.cfg配置文件:
ansible playbook会默认先收集fact信息,如果不需要fact数据可以在playbook中禁用fact采集:
也可以全局禁用fact采集:
另一种解决方案就是使用fact缓存,目前ansible支持下面几种fact缓存:
JSON文件做fact缓存示例
ansible把采集到的fact写入控制主机的json文件中,如果文件已经存在,那么ansible不会再去主机上采集fact
启用JSON文件缓存,修改ansible.cfg文件:
ansible默认并发数是5,可以用下面两种方法修改并发数:
ansible内置多种云计算相关模块,如aws,openstack,docker等,下图是ansible与docker相关的模块:
通过playbook和dockerfile相结合的方式生成镜像, 示例如下:
ansible可以通过docker模块来操作容器,示例如下:
6. windows下python实现自动ssh网络设备执行多条命令并保存显示结果用什么库实现
假设从主机A,检查主机B上的进程,
需要在主机B上建立检查用户,例如叫x,
并设置通过public key认证登录SSH,不会可以google搜一下,
然后,在A机器上执行:
ssh x@B ~/command.sh > result.txt
command.sh就是B机器上放置在x目录下的脚本。
输出结果应该是写到了result.txt
或者另一种写法
result=`ssh x@B ~/command.sh`
结果直接保存到result变量中了。
暂时没有linux环境,所以没有实际测试,你自己试试吧
7. 26个适用于VMware管理员的强大工具,收藏了!
VMware的产品为用户提供云计算和平台虚拟化服务,并支持使用多种扩展其功能的工具。作为管理员你一定有很多工具,所以要跟踪它们是一项很大的挑战。本文给VMware管理员推荐一些工具。
As Built Report是一个开源配置文档框架,使用Windows PowerShell和PScribo生成和构建XML,Text,HTML和Word格式的文档。
可以使用As Built Report轻松运行,并针对IT环境生成报告,并能够轻松地为任何IT供应商和技术创建新报告,并支持RESTful API和/或Windows PowerShell。
Cross vCenter Workload Migration Utility可以使用GUI轻松地通过Cross-vCenter vMotion功能在vCenter服务器之间迁移虚拟机。它自动填充以便于管理,支持并行批量迁移多个VM,并实现REST API以自动执行迁移任务。
ESXTOP是一个非常棒的命令行工具,它与vSphere一起帮助管理员实时嗅探并修复性能问题。它显示有关vSphere环境资源管理的信息,包括有关磁盘,CPU,网络和内存使用情况的所有实时信息。
Git毋庸赘言了,开源代码版本的控制系统,是有Linux之父Linus Torvalds在2005年创建的。它有成千上万的贡献者,大社区的支持,并与几个IDE和操作系统兼容,包括VMware。
超融合基础设施Benchmark将HCI Bench作为开源VDbench基准测试工具的自动化包装器,可简化跨HCI集群的自动化测试。
HCI Bench通过完全自动化启动测试虚拟机的端到端流程,调节工作负载运行,聚合测试结果以及收集有价值的数据以进行故障排除,以可控且一致的方式加速客户POC性能测试。
Hyper是一个跨平台,可定制的开源终端应用程序,根据现代Web标准构建,在同类工具中很有竞争优势。
IOInsight是VMware附带的虚拟工具,使用户能够了解其虚拟机的存储I/O行为。它具有基于Web的用户界面,用户可以通过该界面选择要监控和显示结果的VMDK,以便在性能调整和存储容量方面做出更好的选择。
Linux VSM是VMware的Linux软件管理器的增强入口。有了它,用户可以登录My VMware,访问下载信息,并查看VSM允许的下载子集。Linux VSM的设计比用于macOS和Linux的VSM版本稍微智能一些。例如,它不会中断操作,而是忽略丢失的文件。
VMware的vRealize Log Insight是一个虚拟工具,管理员可以使用该工具查看,管理和分析Syslog数据,从而获得对vSphere进行故障排除并执行合规性和安全性检查的功能。
mRemoteNG是一个开源的,多协议,标签式远程连接管理器,作为mRemote的分支创建,具有新功能和错误修复。它支持虚拟网络计算(VNC),SSH,rlogin,HTTP,HTTPS,Citrix独立计算架构(ICA)和远程桌面/终端服务器(RDP)。
pgAdmin是管理PostgreSQL及其相关数据库的最流行,功能最丰富的工具。它的功能包括Windows,macOS和Linux的可用性,广泛的在线文档,用于语法突出显示的强大查询工具,多种部署模型,以及对大多数PostgreSQL服务器端编码的支持,以及其他功能。
pocli是一个基于Python的工具,它为ownCloud提供了一个轻量级命令行客户端,用于基本文件操作,如上传,下载和目录管理。pocli的开发受到缺乏一种能够在没有GUI的情况下快速上传和/或下载文件的工具的灵感。
Postman是一个非常好的HTTP客户端,用于测试Web服务,它的创建是为了简化API的开发,测试和记录过程,使用户能够快速完成简单和复杂的HTTP请求。Postman对于个人和小型团队是免费的,并为具有多达50个用户和企业解决方案的团队提供具有高级功能的每月订阅。
PowerCLI是一个功能强大的应用程序,用于自动化和管理VMware vSphere配置,几乎可以与任何VMware产品配合使用。此命令行工具构建于Windows PowerShell之上,可提供600多个cmdlet,不仅可以管理vSphere和VMware,还可以管理vCloud,vSAN,VMware Site Recovery Manager,NSX-T,VMware HCX等。
RVTools是一个.NET应用程序,它使用VI SDK显示有关虚拟环境的重要数据,它与多种技术交互,包括VirtualCenter Appliance,ESX Server 4i,ESX Server 4.x,ESX Server 3i,VirtualCenter 2.5等等。
RVTools拥有超过一百万的下载量,非常出色地显示有关虚拟环境的CD驱动器,快照,ESX主机,VM内核,数据存储,运行状况检查,许可证信息,资源池等的信息,你可以使用它来更新你的VMTools到他们的最新版本。
vCenter Converter是一种用于将本地和远程物理机转换为虚拟机而不会出现任何停机的工具。它具有一个集中控制台,可以在本地和远程管理多个同步转换。
vCheck是一个HTML框架脚本,旨在与PowerShell一起安排自动化任务,通过电子邮件以可读格式向你发送信息。vCheck是一个智能脚本,因为它只向你发送重要信息,省略了不必要的细节。例如,如果没有足够的空间,你将不会收到有关数据存储磁盘空间的任何信息。
vDocumentation为用户提供PowerShell社区创建的PowerCLI脚本集,以CSV或Excel格式提供vSphere环境的基础结构文档。它由Ariel和Edgar Sanchez维护。
通过VMware API Explorer,你可以跨任何主要VMware平台浏览,搜索和检查API,不包括vRealize,NSX,vCloud Suite和vSphere。可以使用资源管理器轻松访问特定于所选API的SDK和代码示例以及其他资源。
在VMware vCenter的CapacityIQ工具,使管理员可以分析,预测和规划自己的虚拟桌面环境或数据中心的容量需求。
VMware Health Analyzer(vHA)用于根据标准化实践评估VMware环境。它由VMware合作伙伴/解决方案提供商使用,目前仅供有权访问Partner Central和VMware员工的客户使用。
VMware OS Optimization Tool使管理员能够优化Windows 7到10系统,以便与VMware Horizon View配合使用。其功能包括跨多个系统的可自定义模板等。可以使用VMware OS Optimization Tool来管理模板,优化 历史 记录和回滚,执行远程和本地分析。
Project Onyx是一个实用程序,用于根据vSphere客户端中的单击生成代码。它的目的是让你加快脚本的开发速度。Project Onyx监控vSphere客户端和vCenter Server之间的网络通信,并将其转换为可执行的PowerShell代码,该代码可以修改为可重用的脚本或函数。
VMware Skyline是一种自动化支持技术,旨在通过帮助客户在问题发生之前避免问题来提高团队生产力和VMware环境的整体可靠性。
VMware vRealize Orchestrator是功能最强大的VMware管理工具之一,因为它允许用户使用拖放式GUI创建自动执行多个日常任务的工作流。它还在VMware Solution Exchange中提供了大量插件库,用于第三方解决方案并扩展其功能。
WinSSHterm是一个适用于Windows的生产就绪SSH客户端,它将WinSCP,PuTTY / KiTTY和VcXsrv组合成一个选项卡式解决方案。其功能包括使用主密码,模板变量,眼睛友好的终端颜色,键盘快捷键等。
8. Python 常用的标准库以及第三方库有哪些
参考:知乎
Python 常用的标准库以及第三方库
standard libs:
itertools
functools 学好python有必要掌握上面这两个库吧,
re 正则
subprocess 调用shell命令的神器
pdb 调试
traceback 调试
pprint 漂亮的输出
logging 日志
threading和multiprocessing 多线程
urllib/urllib2/httplib http库,httplib底层一点,推荐第三方的库requests
os/sys 系统,环境相关
Queue 队列
pickle/cPickle 序列化工具
hashlib md5, sha等hash算法
cvs
json/simplejson python的json库,据so上的讨论和benchmark,simplejson的性能要高于json
timeit 计算代码运行的时间等等
cProfile python性能测量模块
glob 类似与listfile,可以用来查找文件
atexit 有一个注册函数,可用于正好在脚本退出运行前执行一些代码
dis python 反汇编,当对某条语句不理解原理时,可以用dis.dis 函数来查看代码对应的python 解释器指令等等。
3th libs:
paramiko ssh python 库
selenium 浏览器自动化测试工具selenium的python 接口
lxml python 解析html,xml 的神器
mechanize Stateful programmatic web browsing
pycurl cURL library mole for Python
Fabric Fabric is a Python (2.5 or higher) library and command-line tool for streamlining the use of SSH for application deployment or systems administration tasks.
xmltodict xml 转 dict,真心好用
urllib3 和 requests: 当然其实requests就够了 Requests: HTTP for Humans
flask web 微框架
ipdb 调试神器,同时推荐ipython!结合ipython使用
redis redis python接口
pymongo mongodbpython接口
PIL python图像处理
mako python模版引擎
numpy , scipy 科学计算
matplotlib 画图
scrapy 爬虫
django/tornado/web.py/web2py/uliweb/flask/twisted/bottle/cherrypy.等等 python web框架/服务器
sh 1.08 — sh v1.08 documentation 用来运行shell 模块的 极佳选择
9. python的paramiko模块 支持连接交换机吗
paramiko使用
paramiko模块是基于python实现了SSH2远程安全连接,支持认证和密钥方式,可以实现远程连接、命令执行、文件传输、中间SSH代理功能
安装
pip install paramiko
或 easy_install paramiko
paramiko依赖第三方的Crypto,Ecdsa和pyhton-devel,所以需要安装
paramiko核心组件
SSHClient类
SSHClient类是SSH服务会话的高级表示,该类实现了传输、通道、以及SFTP的校验、建立的方法
connect 方法
connect方法实现了远程ssh连接并作校验
hostname 连接的目标主机
port=SSH_PORT 指定端口
username=None 验证的用户名
password=None 验证的用户密码
pkey=None 私钥方式用于身份验证
key_filename=None 一个文件名或文件列表,指定私钥文件
timeout=None 可选的tcp连接超时时间
allow_agent=True, 是否允许连接到ssh代理,默认为True 允许
look_for_keys=True 是否在~/.ssh中搜索私钥文件,默认为True 允许
compress=False, 是否打开压缩
sock=None,
gss_auth=False,
gss_kex=False,
gss_deleg_creds=True,
gss_host=None,
banner_timeout=None
参数
exec_command方法
远程执行命令的方法,该命令的输入与输出流为标准输入、标出输出、标准错误输出
command 执行的命令
bufsize=-1 文件缓冲区大小
timeout=None
get_pty=False
参数
load_system_host_key方法
夹在本地公钥文件,默认为~/.ssh/known_hosts
filename=None 指定本地公钥文件
参数
set_missing_host_key_policy方法
设置连接的远程主机没有本地主机密钥或HostKeys对象时的策略,目前支持三种:用法:
set_missing_host_key_policy(paramiko.AutoAddPolicy())AutoAddPolicy 自动添加主机名及主机密钥到本地HostKeys对象,不依赖load_system_host_key的配置。即新建立ssh连接时不需要再输入yes或no进行确认
WarningPolicy 用于记录一个未知的主机密钥的python警告。并接受,功能上和AutoAddPolicy类似,但是会提示是新连接
RejectPolicy 自动拒绝未知的主机名和密钥,依赖load_system_host_key的配置。此为默认选项
from_transport(cls,t) 创建一个已连通的SFTP客户端通道
put(localpath, remotepath, callback=None, confirm=True) 将本地文件上传到服务器 参数confirm:是否调用stat()方法检查文件状态,返回ls -l的结果
get(remotepath, localpath, callback=None) 从服务器下载文件到本地
mkdir() 在服务器上创建目录
remove() 在服务器上删除目录
rename() 在服务器上重命名目录
stat() 查看服务器文件状态
listdir() 列出服务器目录下的文件
SFTPClient类
SFTPCLient作为一个sftp的客户端对象,根据ssh传输协议的sftp会话,实现远程文件操作,如上传、下载、权限、状态
远程连接并执行命令
实现远程连接主机,并执行命令,同时记录日志
* 直接验证方式
10. python如何通过串口SSH登录服务器
需要写一个基于串口通信协议的ssh服务器和客户端,服务器部署到linux上,客户端在windows上;
其次,客户端要提供sdk for python;
最后,你就可以用python通过ssh登录linux了。