用paramiko与SSH交互

devtools/2024/11/18 8:40:02/
# 导入paramiko库用于SSH连接,以及sys库用于处理命令行参数
import paramiko
import sys# 定义一个函数send_command,用于发送命令到SSH服务器并打印输出结果
def send_command(ssh_client, cmd):# 使用exec_command方法执行命令,并获取输入、输出和错误流stdin, stdout, stderr = ssh_client.exec_command(cmd)# 打印命令的标准输出print(stdout.read().decode('utf-8'))# 如果有标准错误输出,也打印出来if stderr.read().decode('utf-8'):print(stderr.read().decode('utf-8'))# 定义一个函数connect,用于建立SSH连接
def connect(host, port, user, password):try:# 创建SSHClient实例ssh_client = paramiko.SSHClient()# 设置策略,自动添加主机密钥到本地HostKeys对象,不需要手动确认ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())# 使用提供的主机、端口、用户名和密码连接到SSH服务器ssh_client.connect(host, port, username=user, password=password)return ssh_clientexcept paramiko.AuthenticationException:# 如果认证失败,打印错误信息print("Authentication failed, please verify your credentials")return Noneexcept paramiko.SSHException as sshException:# 如果无法建立SSH连接,打印错误信息print(f"Could not establish SSH connection: {sshException}")return Noneexcept Exception as e:# 如果发生其他异常,打印错误信息print(f"An error occurred: {e}")return None# 定义主函数main
def main():# 检查命令行参数的数量是否正确if len(sys.argv) != 5:print("Usage: python SSH僵尸网络.py <host> <port> <user> <password>")return# 从命令行参数中获取主机、端口、用户名和密码host = sys.argv[1]port = int(sys.argv[2])  # 确保端口是整数user = sys.argv[3]password = sys.argv[4]# 尝试建立SSH连接ssh_client = connect(host, port, user, password)# 如果连接成功if ssh_client:# 进入循环,持续接收命令while True:# 获取用户输入的命令command = input("请输入要执行的命令(输入'exit'退出):")# 如果输入的是exit,就跳出循环并关闭连接if command.lower() == "exit":ssh_client.close()break# 发送并执行命令send_command(ssh_client, command)# 检查是否为主模块运行,如果是,则执行main函数
if __name__ == '__main__':main()
运行命令:python SSH_client.py IP 端口号 username password
或者按图运行


http://www.ppmy.cn/devtools/134914.html

相关文章

前馈神经网络 (Feedforward Neural Network, FNN)

代码功能 网络定义&#xff1a; 使用 torch.nn 构建了一个简单的前馈神经网络。 隐藏层使用 ReLU 激活函数&#xff0c;输出层使用 Sigmoid 函数&#xff08;适用于二分类问题&#xff09;。 数据生成&#xff1a; 使用经典的 XOR 问题作为数据集。 数据点为二维输入&#xff…

苍穹外卖学习-day11

1. Apac 1.1 介绍 Apache ECharts 是一款基于 Javascript 的数据可视化图表库&#xff0c;提供直观&#xff0c;生动&#xff0c;可交互&#xff0c;可个性化定制的数据可视化图表。 官网地址&#xff1a;Apache ECharts 常见的统计图形有&#xff1a;柱状图&#xff0c;条形…

创建vue3项目步骤

脚手架创建项目&#xff1a; pnpm create vue Cd 项目名称安装依赖&#xff1a;Pnpm iPnpm Lint&#xff1a;修复所有文件风格 &#xff0c;不然eslint语法警告报错要双引号Pnpm dev启动项目 拦截错误代码提交到git仓库&#xff1a;提交前做代码检查 pnpm dlx husky-in…

【汇编语言】数据处理的两个基本问题 —— 汇编语言中的数据奥秘:数据位置与寻址方式总结

文章目录 前言1. 引言1.1 两个基本问题1.2 两个描述性符号 2. bx、si、di和bp2.1 通过"[...]"来寻址&#xff0c;只有这四种寄存器2.2 四种寄存器寻址时的组合方式2.3 使用bp时&#xff0c;默认段地址为ss 3.机器指令处理的数据在什么地方&#xff1f;4. 汇编语言中数…

【SQL】mysql常用命令

为方便查询&#xff0c;特整理MySQL常用命令。 约定&#xff1a;$后为Shell环境命令&#xff0c;>后为MySQL命令。 1 常用命令 第一步&#xff0c;连接数据库。 $ mysql -u root -p # 进入MySQL bin目录后执行&#xff0c;回车后输入密码连接。# 常用参数&…

任意文件下载漏洞

1.漏洞简介 任意文件下载漏洞是指攻击者能够通过操控请求参数&#xff0c;下载服务器上未经授权的文件。 攻击者可以利用该漏洞访问敏感文件&#xff0c;如配置文件、日志文件等&#xff0c;甚至可以下载包含恶意代码的文件。 这里再导入一个基础&#xff1a; 你要在网站下…

#define定义宏

&#xff03;define机制包括了一个规定&#xff0c;允许把参数替换到文本中&#xff0c;这种实现通常称为宏或定义宏。 宏的申明方式&#xff1a; &#xff03;define name&#xff08;parament-list&#xff09;stuff 其中的parament-list是一个由逗号隔开的符号表&#xf…

go channel中的 close注意事项 range取数据

在使用 Go 语言中的 close 函数时&#xff0c;有一些注意事项需要牢记&#xff0c;以确保程序的健壮性和正确性&#xff1a; 1. **仅用于通道&#xff08;channel&#xff09;**&#xff1a; - close 函数只能用于关闭通道&#xff0c;不能用于关闭文件、网络连接或其他资源…