导航:首页 > 编程语言 > pythonnetstat

pythonnetstat

发布时间:2023-09-01 10:59:41

‘壹’ python获取当前socket连接状态,是连接还是断开。

socket建立连接后,你可以在上面加一个超时,如果超时异常出现就是断开了。
另外可以用select(inlist,writelist,errorlist,timeout)的办法,去轮询它。超过比如60秒,就认为它超时。
在操作系统层面,你可以用netstat
找到这个socket连接,看它的TCP状态。如果到了CLOSE_WAIT,
TIME_WAIT,就是对方或者是自己关闭了。
如果是FIN2.。。。SEN。。或者是SYN_XXX就是还是连接或者是发送状态中。
通常这些状态在操作系统的TCP协议里都设置有超时。如果超时过了,它自己会关闭。然后变成WAIT状态。

‘贰’ 如何进行服务器的批量管理以及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或其它方式得到该结果。

‘叁’ netstat和lsof

Netstat 是一款命令行工具,可用于列出系统上所有的网络套接字连接情况,包括 tcp, udp 以及 unix 套接字,另外它还能列出处于监听状态(即等待接入请求)的套接字。如果你想确认系统上的 Web 服务有没有起来,你可以查看80端口有没有打开

列出所有当前的连接。使用 -a 选项即可:

上述命令列出 tcp, udp 和 unix 协议下所有套接字的所有连接。然而这些信息还不够详细,管理员往往需要查看某个协议或端口的具体连接情况。

使用 -t 选项列出 TCP 协议的连罩塌接:

使用 -u 选项列出 UDP 协议的连接:

默认情况下 netstat 会通过反向域名解析技术查找每个 IP 地址对应的主机名。这会降低查找速度。如果你觉得 IP 地址已经足够,而没有必要知道主机名,就使用 -n 选项禁用域名解析功能。

任何网络服务的后台进程都会打开一个端口,用于监听接入的请求。这大闷知些正在监听的套接字也和连接的套接字一样,也能被 netstat 列出来。使用 -l 选项列出正在监听的套接字。

现在我们可以看到处于监听状态的 TCP 端口和连接。如果你查看所有监听端口,去掉 -t 选项。如果你只想查看 UDP 端口,使用 -u 选项,代替 -t 选项。

查看端口9006是否被占用,及被占用程序。

查看端口和连接的信息时,能查看到它们对应的进程名和进程号对系统管理员来说是非常有帮助的。举个栗子,Apache 的 httpd 服务开启80端口,如果你要查看 http 服务是否已经启动,或滚消者 http 服务是由 apache 还是 nginx 启动的,这时候你可以看看进程名。

使用 -p 选项查看进程信息。
python -m SimpleHTTPServer

使用 -p 选项时,netstat 必须运行在 root 权限之下,不然它就不能得到运行在 root 权限下的进程名,而很多服务包括 http 和 ftp 都运行在 root 权限之下。

相比进程名和进程号而言,查看进程的拥有者会更有用。使用 -ep 选项可以同时查看进程名和用户名。

netstat 也能打印网络接口信息,-i 选项就是为这个功能而生。

上面输出的信息比较原始。我们将 -e 选项和 -i 选项搭配使用,可以输出用户友好的信息。

上面的输出信息与 ifconfig 输出的信息一样。

lsof(list of file)列出服务器打开的文件

lsof -i:8000

看端口是否占用一般用两个: netstat和lsof

1.netstat一般无权限控制,lsof有权限控制,只能看到本用户
2.losf能看到pid和用户,可以找到哪个进程占用了这个端口

阅读全文

与pythonnetstat相关的资料

热点内容
如何做单机服务器 浏览:943
校讯通查成绩怎么显示服务器异常 浏览:882
冰箱压缩机工作压力是多少 浏览:408
程序员20多平米租房 浏览:451
电工知识用线的算法 浏览:338
极光推送php服务器端 浏览:5
怎么用命令方块控制僵尸 浏览:774
大型云服务器有哪些 浏览:466
解压版三国街机 浏览:423
去中心化app里面包含什么 浏览:948
密钥安装命令行 浏览:505
文献编译英文 浏览:659
php调用浏览器 浏览:527
数控车床编程初学实例 浏览:949
cad中筛选命令是什么 浏览:801
数控铣床法兰克编程 浏览:331
怎么样分解压缩包图标 浏览:620
php两年工作经验简历 浏览:765
怎么提前解压房贷 浏览:700
反诈宣传app哪里可以拿到用户资料 浏览:857