Python如何在远程机器执行Shell命令?本文带你学习如何使用 paramiko 库在 Python 中的远程机器上执行 shell 命令和脚本。
你有没有想过在你的 Linux 机器上以远程方式快速执行某些命令?或者你想在你的服务器中定期执行一些代码行来自动化吗?在本教程中,你将学习如何编写一个简单的 Python 脚本来在你的 Linux 机器上远程执行 shell 命令,下面有详细的Python远程执行Shell命令示例。
相关文章:
如何在 Python 中暴力破解 SSH 服务器。
Python如何远程执行Shell命令?我们将使用paramiko库,让我们安装它:
pip3 install paramiko
定义一些连接凭据:
import paramikohostname = "192.168.1.101"
username = "test"
password = "abc123"
在上面的代码中,我定义了主机名、用户名和密码,这是我的本地 Linux 机器,你需要根据情况编辑这些变量,或者你可能想像我们一样使用argparse模块进行命令行参数解析通常做这样的任务。
请注意,使用此类凭据连接到 SSH 是不安全的,你可以将 SSH 侦听器守护程序配置为仅接受公共身份验证密钥,而不是使用密码。但是,出于演示目的,我们将使用密码。
执行 Shell 命令Python远程执行Shell命令示例:现在让我们创建一个你希望在该远程机器上执行的命令列表:
commands = [
"pwd",
"id",
"uname -a",
"df -h"
]
在这种情况下,只是输出一些有关操作系统的有用信息的简单命令。
Python如何在远程机器执行Shell命令?下面的代码负责启动SSH客户端并连接到服务器:
# initialize the SSH client
client = paramiko.SSHClient()
# add to known hosts
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
try:
client.connect(hostname=hostname, username=username, password=password)
except:
print("[
!] Cannot connect to the SSH Server")
exit()
现在让我们遍历刚刚定义的命令并一一执行它们:
# execute the commands
for command in commands:
print("="*50, command, "="*50)
stdin, stdout, stderr = client.exec_command(command)
print(stdout.read().decode())
err = stderr.read().decode()
if err:
print(err)
这是我的结果:
================================================== pwd ==================================================
/home/test================================================== id ==================================================
uid=1000(test) gid=0(root) groups=0(root),27(sudo)================================================== uname -a ==================================================
Linux rockikz 4.17.0-kali1-amd64 #1 SMP Debian 4.17.8-1kali1 (2018-07-24) x86_64 GNU/Linux================================================== df -h ==================================================
FilesystemSizeUsed Avail Use% Mounted on
udev1.9G01.9G0% /dev
tmpfs392M6.2M386M2% /run
/dev/sda1452G410G19G96% /
tmpfs2.0G02.0G0% /dev/shm
tmpfs5.0M05.0M0% /run/lock
tmpfs2.0G02.0G0% /sys/fs/cgroup
tmpfs392M12K392M1% /run/user/131
tmpfs392M0392M0% /run/user/1000
太棒了,这些命令 在我的 Linux 机器上成功执行了!
执行脚本Python如何远程执行Shell命令?现在你已经知道如何一个一个地执行命令,让我们深入一点并执行整个 shell ( .sh ) 脚本。
考虑这个脚本(名为"script.sh"):
cd Desktop
mkdir test_folder
cd test_folder
echo "$PATH" > path.txt
Python远程执行Shell命令示例:在后SSH连接,而不是为迭代的命令,现在我们看到这个剧本的内容和执行:
# read the BASH script content from the file
bash_script = open("script.sh").read()
# execute the BASH script
stdin, stdout, stderr = client.exec_command(bash_script)
# read the standard output and print it
print(stdout.read().decode())
# print errors if there are any
err = stderr.read().decode()
if err:
print(err)
# close the connection
client.close()
【如何用Python在远程机器上执行Shell命令()】exec_command()方法使用默认 shell(BASH、SH或任何其他)执行脚本并分别返回标准输入、标准输出和标准错误,如果有,我们将从stdout和stderr读取,然后我们关闭SSH连接。
执行上述代码后,在Desktop中创建了一个新文件test_folder并在其中包含一个包含全局$PATH变量的文本文件:
文章图片
结论Python如何在远程机器执行Shell命令?如你所见,这对许多场景都很有用,例如,你可能只想通过远程执行 Python 脚本来管理你的服务器,你可以为所欲为!
顺便说一句,如果你想在远程服务器上运行更复杂的作业,你可能需要查看Ansible。
Python如何远程执行Shell命令?你还可以使用Fabric库,因为它是一个高级 Python 库,旨在通过 SSH 远程执行 shell 命令,它构建在Invoke和Paramiko之上。
你可以随意编辑代码,例如,你可能希望使用argparse解析命令行参数。
推荐阅读
- 如何在Python中暴力破解SSH服务器(代码实现教程)
- 如何在Python中构建XSS漏洞扫描器(代码实现教程)
- 如何在Python中制作电子邮件提取器(代码实现教程)
- 如何使用hashlib在Python中使用哈希算法(详细教程)
- 如何用Python暴力破解FTP服务器(代码实现教程)
- 如何在Python中实现加密和解密文件(详细教程)
- 如何使用Scapy在Python中构建WiFi扫描仪(代码实现教程)
- 如何在Python中提取图像元数据(代码实现教程)
- 系统之家win10系统64位企业版安装办法图解