如何进行服务器的批量管理以及python 的paramiko的模块

如何进行服务器的批量管理以及python 的paramiko的模块,第1张

最近对公司的通道机账号进行改造管理,全面的更加深入的理解了公司账号管理的架构。(注:基本上所有的机器上的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 = paramikoSSHClient()2 sshset_missing_host_key_policy(paramikoAutoAddPolicy())3 sshconnect("IP地址",22,"用户名","密码")

上面的第二行代码的作用是允许连接不在know_hosts文件中的主机。

方式二:

1 t = paramikoTransport(("IP地址","端口"))2 tconnect(username = “用户名”, password = “口令”)3 如果连接远程主机需要提供密钥,上面第二行代码可改成:4 tconnect(username = “用户名”, password = “口令”, hostkey=”密钥”)

3一些简单的例子:

如果linux服务器开放了22端口,在windows端,我们可以使用paramiko远程连接到该服务器,并执行任意命令,然后通过 print或其它方式得到该结果。

1 #!/usr/bin/python 2 import paramiko3  4 ssh = paramikoSSHClient()5 sshset_missing_host_key_policy(paramikoAutoAddPolicy())6 sshconnect("某IP地址",22,"用户名", "口令")7 stdin, stdout, stderr = sshexec_command("你的命令")8 print stdoutreadlines()9 sshclose()

其中的”你的命令”可以任意linux支持的命令,如一些常用的命令:

1 df:查看磁盘使用情况2 uptime:显示系统运行时间信息3 cat:显示某文件内容4 mv/cp/mkdir/rmdir:对文件或目录进行 *** 作5 /sbin/service/ xxxservice start/stop/restart:启动、停止、重启某服务6 netstat -ntl |grep 8080:查看8080端口的使用情况
7  或者 nc -zv localhost :查看所有端口的使用情况
8 find / -name XXX:查找某文件9

这样一来,对于linux的任何 *** 作几乎都可以通过windows端完成,如果对该功能进行引申,还可以同时管理多台服务器。

4 从widnows端下载linux服务器上的文件

1 #!/usr/bin/python  2 import paramiko 3   4 t = paramikoTransport((“主机”,”端口”)) 5 tconnect(username = “用户名”, password = “口令”) 6 sftp = paramikoSFTPClientfrom_transport(t) 7 remotepath=’/var/log/systemlog’ 8 localpath=’/tmp/systemlog’ 9 sftpget(remotepath, localpath)10 tclose()

5从widnows端上传文件到linux服务器

1 #!/usr/bin/python  2 import paramiko 3  4 t = paramikoTransport((“主机”,”端口”)) 5 tconnect(username = “用户名”, password = “口令”) 6 sftp = paramikoSFTPClientfrom_transport(t) 7 remotepath=’/var/log/systemlog’ 8 localpath=’/tmp/systemlog’ 9 sftpput(localpath,remotepath)10 tclose()

·Web应用开发
Python常被用于Web开发,随着Python的Web开发框架逐渐成熟,如Django、flask等等,开发者们可以更轻松地开发和管理复杂的Web程序。通过mod_wsgi模块,Apache可以运行Python编写的Web程序,举个最直观的例子,全球最大的搜索引擎
Google,在其网络搜索系统中就广泛使用 Python 语言。另外,我们经常访问的集、读书、音乐于一体的豆瓣网(如图 1 所示),也是使用 Python
实现的。不仅如此,全球最大的视频网站 Youtube 以及 Dropbox(一款网络文件同步工具)也都是用 Python 开发的。
·自动化运维
Python 是标准的系统组件,可以在终端下直接运行 Python。有一些 Linux 发行版的安装器使用 Python 语言编写,例如 Ubuntu 的
Ubiquity 安装器、Red Hat Linux 和 Fedora 的 Anaconda 安装器等等。另外,Python
标准库中包含了多个可用来调用 *** 作系统功能的库。例如,通过 pywin32 这个软件包,我们能访问 Windows 的 COM 服务以及其他 Windows
API;使用 IronPython,我们能够直接调用 Net Framework。
·人工智能领域
人工智能是现如今非常火的一个方向, Python
在人工智能领域内的机器学习、神经网络、深度学习等方面,都是主流的编程语言。可以这么说,基于大数据分析和深度学习发展而来的人工智能,其本质上已经无法离开
Python 的支持了。
·网络爬虫
Python语言很早就用来编写网络爬虫。Google 等搜索引擎公司大量地使用 Python 语言编写网络爬虫。从技术层面上将,Python
提供有很多服务于编写网络爬虫的工具,例如 urllib、Selenium 和 BeautifulSoup 等,还提供了一个网络爬虫框架 Scrapy。
·游戏开发
很多游戏都是使用C++编写图形显示等高性能的模块,使用Python或Lua编写游戏的逻辑,相比Python,Lua的功能更简单,体积也更小,但Python支持更多的特性和数据类型。除此之外,Python
可以直接调用 Open GL 实现 3D 绘制,这是高性能游戏引擎的技术基础。事实上,有很多 Python 语言实现的游戏引擎,例如 Pygame、Pyglet
以及 Cocos 2d 等。

1、Web应用开发

Python经常被用于 Web 开发。例如,通过 mod_wsgi 模块,Apache 可以运行用 Python 编写的 Web 程序。Python 定义了 WSGI 标准应用接口来协调 >

不仅如此,一些 Web 框架(如 Django、TurboGears、web2py 等等)可以让程序员轻松地开发和管理复杂的Web程序。

举个最直观的例子,全球最大的搜索引擎 Google,在其网络搜索系统中就广泛使用 Python 语言。另外,我们经常访问的集、读书、音乐于一体的豆瓣网,也是使用 Python 实现的。

2、 *** 作系统管理、自动化运维开发

很多 *** 作系统中,Python 是标准的系统组件,大多数 Linux 发行版以及 NetBSD、OpenBSD 和 Mac OS X 都集成了 Python,可以在终端下直接运行 Python。

有一些 Linux 发行版的安装器使用 Python 语言编写,例如 Ubuntu 的 Ubiquity 安装器、Red Hat Linux 和 Fedora 的 Anaconda 安装器等等。

另外,Python 标准库中包含了多个可用来调用 *** 作系统功能的库。例如,通过 pywin32 这个软件包,我们能访问 Windows 的 COM 服务以及其他 Windows API;使用 IronPython,我们能够直接调用 Net Framework。

通常情况下,Python 编写的系统管理脚本,无论是可读性,还是性能、代码重用度以及扩展性方面,都优于普通的 shell 脚本。

3、游戏开发

很多游戏使用 C++ 编写图形显示等高性能模块,而使用 Python 或 Lua 编写游戏的逻辑。和 Python 相比,Lua 的功能更简单,体积更小;而 Python 则支持更多的特性和数据类型。

比如说,国际上指明的游戏 Sid Meier's Civilization,就是使用 Python 实现的。

4、编写服务器软件

Python 对于各种网络协议的支持很完善,所以经常被用于编写服务器软件以及网络爬虫。

比如说,Python 的第三方库 Twisted,它支持异步网络编程和多数标准的网络协议(包含客户端和服务器端),并且提供了多种工具,因此被广泛用于编写高性能的服务器软件。

5、科学计算

NumPy、SciPy、Matplotlib 可以让 Python 程序员编写科学计算程序。

以上都只是 Python 应用领域的冰山一角,总的来说,Python 语言不仅可以应用到网络编程、游戏开发等领域,还可以在图形图像处理、只能机器人、爬取数据、自动化运维等多方面展露头角,为开发者提供简约、优雅的编程体验。

“python可以做:1、Web开发;2、数据科学研究;3、网络爬虫;4、嵌入式应用开发;5、游戏开发;6、桌面应用开发。python是一种动态的、面向对象的脚本语言,有着简单易学、速度快、易于维护等特点。”

我发现有Python主要有以下三大主要应用:

Web开发

数据科学:包括机器学习、数据分析和数据可视化

脚本

01 Web开发

Django和Flask等基于Python的Web框架最近在Web开发中非常流行。

这些Web框架可以帮助你用Python编写服务器端代码(后端代码)。这是在你的额服务器上运行的代码,而不是运行在用户设备和浏览器的代码(前端代码)。

1 为什么需要Web框架

因为用Web框架可以更容易地构建通用后端逻辑。这包括将不同的URL映射到Python代码块,处理数据库以及生成用户在浏览器中看到的HTML文件。

2 应该使用哪种Python Web框架

Django和Flask是最流行的两种Python Web框架。如果你刚刚入门,我建议使用其中一种。

3 Django和Flask有什么区别

Gareth Dwyer 关于这个问题有一篇出色的文章,在这里我引用几段:

主要区别

Flask:能够实现简单、灵活和细致的控制。并能让你自己决定实现方式。

Django:提供了全面的体验:你可以获得管理面板、数据库接口、ORM(对象关系映射)以及开箱即用的应用程序和项目的目录结构。

如何选择

Flask:如果你关注的是经验和学习的机会,或者你想更多地控制使用哪些组件,比如你想使用哪些数据库以及如何与其进行交互。

Django:如果你关注最终产品,或者你正在研究一个简单的应用,比如新闻网站、网店或博客,并且你希望有单一实现的方式。

常见的编程方向有:Java开发、PHP开发、Python、大数据开发、unity游戏开发等不知道你目前有没有计算机基础,现在比较火的Python+人工智能、大数据、Java三者相比而,Python入门更容易一些,适合零基础学习,如果有一定的基础可以选择Java作为入门语言!

module被load之后,已经被缓存了。需要刷新mode的话,可以reload()
。但reload()也有一些问题。但总结而言,“python源码修改后需要reload”不是必须的。

你好!
还真没试过,,不过方法肯定是有很多中的,我想python的开发工具应该有带封装的程序吧!!!
或者删Py文件,留解释过后的文件。或者搞一个代码混淆器,混淆一下就OK了嘛!!!(自己写一个也行)
希望对你有所帮助,望采纳。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/zz/10517417.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-09
下一篇2023-05-09

发表评论

登录后才能评论

评论列表(0条)

    保存