添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
# 定义要连接的Linux服务器及账号信息 servers = [ {"hostname": "IP1", "username": "root", "password": "root"}, {"hostname": "IP2", "username": "root", "password": "root"} # 定义要执行的命令 command = "ping www.baidu.com" # 创建SSH客户端对象 ssh_clients = [] for server in servers: ssh = paramiko.Transport((server["hostname"], 22)) ssh.connect(username=server["username"], password=server["password"]) ssh_clients.append(ssh) # 开始执行命令 channel0 = ssh_clients[0].open_channel(kind='session') channel0.exec_command(command) time.sleep(5) channel1 = ssh_clients[1].open_channel(kind='session') channel1.exec_command(command) # 打印命令执行结果 result0 = channel0.recv(1024) print(result0.decode()) result1 = channel1.recv(1024) print(result1.decode()) # 关闭通道和连接 channel0.close() channel1.close() # 关闭所有连接 for ssh in ssh_clients: ssh.close() PING www.a.shifen.com (220.181.38.150) 56(84) bytes of data. 64 bytes from 220.181.38.150 (220.181.38.150): icmp_seq=1 ttl=49 time=2.90 ms 64 bytes from 220.181.38.150 (220.181.38.150): icmp_seq=2 ttl=49 time=2.82 ms 64 bytes from 220.181.38.150 (220.181.38.150): icmp_seq=3 ttl=49 time=2.92 ms 64 bytes from 220.181.38.150 (220.181.38.150): icmp_seq=4 ttl=49 time=2.97 ms 64 bytes from 220.181.38.150 (220.181.38.150): icmp_seq=5 ttl=49 time=2.86 ms PING www.a.shifen.com (110.242.68.3) 56(84) bytes of data. 64 bytes from 110.242.68.3 (110.242.68.3): icmp_seq=1 ttl=49 time=71.5 ms

ssh.open_channel(kind='session') 方法可以在已经建立 SSH 连接的基础上打开一个新会话 Channel。以下是一个使用方式的例子:

import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('hostname', username='username', password='password')
# 打开一个新的会话 Channel
channel = ssh.open_channel(kind='session')
# 在新的 Channel 中执行命令
channel.exec_command('ls -l')
# 获取命令的输出和错误信息
output = channel.recv(1024).decode()
error = channel.recv_stderr(1024).decode()
print(output)
print(error)
# 关闭 Channel 和 SSH 连接
channel.close()
ssh.close()

在该例子中,我们首先使用 Paramiko 库建立 SSH 连接。然后使用 open_channel(kind='session') 方法打开一个新的会话 Channel。接着,我们使用 exec_command 方法在新的 Channel 中执行了一个 ls -l 命令。最后,我们可以通过 recvrecv_stderr 方法获取命令的输出和错误信息。

需要注意的是,在使用 exec_command 方法执行命令之前,我们需要确保该命令不需要交互式输入信息。如果该命令需要交互式输入信息,那么我们需要使用 Paramiko 库提供的其他方法来完成这个需求。

这篇文章主要介绍了python通过SSH登陆linux并操作的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 用的昨天刚接触到的库,在windows下通过paramiko来登录linux系统并执行了几个命令,基本算是初试成功,后面会接着学习的。 >>> import paramiko 虽然不是最有效的方法,但这应该是可行的。在键盘中断处理程序中,您可以exec_command("killall -u %s tail" % uname)这样:#!/usr/bin/env python2import paramikoimport selectimport timeltime = time.time()# Or use random:# import random# ltime = ... 解决:需要修改/etc/security/limits.conf文件中的值,把4096改大一点,如 65535,如不设限制则改为unlimited,且一般指定用户,不设置为全局。解决ssh报错:shell request failed on channel 0。分析原因:目标主机的用户连接线程数太小,导致连接被阻断。用户名 soft nproc unlimited。用户名 hard nproc unlimited。重新进行ssh连接即可。 Python经常被用于Web开发。比如,通过mod_wsgi模块,Apache可以运行用Python编写的Web程序。Python 定义了WSGI (是Python 应用程序或框架和Web服服务器之间的一种接口)标准应用接口来协调Http 服务器与基于Python 的Web 程序之间的通信 原因:登录后,当前所在目录为 /root,此目录下无任何文件。每次执行一次命令,相当于打开一个黑窗口。连接 linux 的黑窗口(shell窗口)连接后,相当于打开一个黑窗口,可在当前窗。执行多条shell语句,用分号隔开。可在本地虚拟机上安装,可以租用“根据ip,端口,用户名,密码,根据ip,端口,用户名,密码,”(不用的时候删掉不计费)。所遇问题:ls不输出任何内容。连接 linux 文件目录。3.linux服务器