热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python远程_Python操作远程机器

操作远程机器主要使用的有paramiko,WMI(WindowsManagementInstrumentation),SMBConnection.paramikoparamiko使

操作远程机器主要使用的有paramiko,WMI(Windows Management Instrumentation),SMBConnection.

paramiko

paramiko使用SSH2协议操作远程机器,是Python语言写的一个模块。

安装

pip install paramiko

使用

使用主要包括执行命令,上传文件和下载文件。

连接

有两种方式连接到linux服务器。

方式一:

ssh = paramiko.SSHClient()

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

ssh.connect("某IP地址",22,"用户名", "口令")

方式二:

t = paramiko.Transport(("主机","端口"))

t.connect(username = "用户名", password = "口令")

如果连接远程主机需要提供密钥,上面第二行代码可改为:

t.connect(username = "用户名", password = "口令", hostkey="密钥")

执行命令

import paramiko

ssh = paramiko.SSHClient()

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

ssh.connect("某IP地址",22,"用户名", "口令")

stdin, stdout, stderr = ssh.exec_command("你的命令")

print stdout.readlines()

ssh.close()

上传文件

import paramiko

t = paramiko.Transport(("主机","端口"))

t.connect(username = "用户名", password = "口令")

sftp = paramiko.SFTPClient.from_transport(t)

remotepath=’/var/log/system.log’

localpath=’/tmp/system.log’

sftp.put(localpath,remotepath)

t.close()

下载文件

import paramiko

t = paramiko.Transport(("主机","端口"))

t.connect(username = "用户名", password = "口令")

sftp = paramiko.SFTPClient.from_transport(t)

remotepath=’/var/log/system.log’

localpath=’/tmp/system.log’

sftp.get(remotepath, localpath)

t.close()

WMI

WMI(Windows Management Instrumentation)用于管理windows机器。以下实例功能是执行远程机器的bat文件。

import wmi

# 远程执行bat文件

def call_remote_bat(ipaddress, username, password):

try:

pythoncom.CoInitialize()

# 用wmi连接到远程服务器

c = wmi.WMI(computer=ipaddress, user=username, password=password)

filename = r"C:\auto_login.bat" # 此文件在远程服务器上

# filename = r"C:\agent\dist\machine.exe" # 此文件在远程服务器上

cmd_callbat = r"cmd /c call %s" % filename

c.Win32_Process.Create(CommandLine=cmd_callbat) # 执行bat文件 Win32_Process.Create

time.sleep(1)

except:

print('{}远程执行失败'.format(ipaddress))

pysmb

pysmb是客户端SMB /CIFS协议(SMB1和SMB2)的纯Python实现,它是便于在Windows机器之间进行文件共享和打印的底层协议,以及通过Samba服务器应用程序与Linux机器进行文件共享和打印。

使用pip安装即可:pip install pysmb

需安装Twisted依赖包: pip install Twisted

简单使用

创建一个访问对象,并建立连接.

from smb.SMBConnection import *

# username: 远程主机用户名 password: 远程主机密码

# my_name: 本机主机计算机名 remote_name: 远程主机计算机名

# ip: 远程主机ip

conn = SMBConnection(username, password, my_name, remote_name)

conn = conn.connect(ip)

常用方法。

servuce_name: 共享文件夹的名称

path: 新文件夹(相对于)共享文件夹的路径。如果路径包含非英文字符,则必须使用unicode字符串来传递路径。

timeout: pysmb将等待的秒数。

file_obj: 具有写入方法的类文件对象。

1. 创建新目录。

conn.createDirectory(service_name,path)

2. 删除空文件夹。

conn.deleteDirectory(service_name,path)

3. 删除文件。

conn.deleteFiles(service_name,path_file_pattern,timeout=30)

4. 重命名文件或文件夹。

# old_path: 旧文件名 new_path: 新文件名

conn.rename(service_name,old_path,new_path)

5. 获取远程主机的共享资源列表。

file_list = conn.listShares(timeout = 30)

# 遍历获取共享文件名

for file in file.list:

print(file.name)

6. 上传文件到远程主机。

conn.storeFile(service_name,path,file_obj, timeout=30)

实例

from smb.SMBConnection import *

def send_file(username, password, my_name, remote_name, ip, file_dir, file_dir_remote):

"""

pysmb下发脚本

:param username: 远程主机用户名

:param password: 远程主机密码

:param my_name: 本地计算机名

:param remote_name: 远程计算机名

:param ip: 远程ip

:param file_dir: 要传输的文件夹本地地址

:param file_dri_remote: 上传位置相对于c盘的路径

:return:

"""

try:

# 创建pysmb访问对象

conn = SMBConnection(username, password, my_name, remote_name)

# 创建pysmb连接

conn.connect(ip)

# 提取文件名或目录正则

pattern = re.compile(r'.*/(.*)')

# 读取文件对象

file_obj = open(file_dir, 'rb')

# 远程文件名

file_name = file_dir_remote + pattern.search(file_dir).group(1)

# 传输文件到远程主机

conn.storeFile('C$', file_name, file_obj)

file_obj.close()

except:

print('{}远程传输文件失败'.format(ip))

time.sleep(1)

call_remote_bat(ip, username, password)

try:

conn.deleteFiles('C$', file_name)

except:

print('{}远程删除文件失败'.format(ip))

conn.close()



推荐阅读
  • 利用 Python Paramiko 库在远程服务器上高效执行 Shell 脚本的方法与技巧 ... [详细]
  • 您的数据库配置是否安全?DBSAT工具助您一臂之力!
    本文探讨了Oracle提供的免费工具DBSAT,该工具能够有效协助用户检测和优化数据库配置的安全性。通过全面的分析和报告,DBSAT帮助用户识别潜在的安全漏洞,并提供针对性的改进建议,确保数据库系统的稳定性和安全性。 ... [详细]
  • 服务器监控系统大概多少钱,服务器监控系统 报价
    服务器监控系统报价内容精选换一换设置“云服务器名称”。名称可自定义,但需符合命名规则:只能由中文字符、英文字母、数字及“_”、“-”、“.”组成。如果同 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • IP双栈环境下网络应用迁移
    IPv4向IPv6迁移有多种途径,在选择具体的迁移方式时,当前环境中运行的应用是否支持IPv6是重要的考量因素之一,同时在编写新的应用时,需要考虑新编写的应用不仅可以适应当前主流的IPv4环境, ... [详细]
  • SVN 功能说明(简版)
    Subversion(SVN)是什么?SVN是一种版本管理系统,是开源软件的基石。即使在沟通充分的情况下,多人维护同一份源代码的一定也会 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • Linux CentOS 7 安装PostgreSQL 9.5.17 (源码编译)
    近日需要将PostgreSQL数据库从Windows中迁移到Linux中,LinuxCentOS7安装PostgreSQL9.5.17安装过程特此记录。安装环境&#x ... [详细]
  • SecureCRT是一款功能强大的终端仿真软件,支持SSH1和SSH2协议,适用于在Windows环境下高效连接和管理Linux服务器。该工具不仅提供了稳定的连接性能,还具备丰富的配置选项,能够满足不同用户的需求。通过SecureCRT,用户可以轻松实现对远程Linux系统的安全访问和操作。 ... [详细]
  • centos ftp服务器搭建_CentOS7服务搭建搭建FTP服务器(下)
    FTP服务器搭建接上篇:CentOS7服务搭建----搭建FTP服务器(上)一、FTP相关配置文件说明相关配置文件:etcvsftpdvsftpd.co ... [详细]
  • 大坑|左上角_pycharm连接服务器同步写代码(图文详细过程)
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了pycharm连接服务器同步写代码(图文详细过程)相关的知识,希望对你有一定的参考价值。pycharm连接服务 ... [详细]
  • Jenkins的分布式构建,在Jenkins的配置中叫做节点,分布式构建能够让同一套代码或项目在不同的环境(如:Windows和Linux系统)中编译、部署等。将jenkins项目 ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • 性能测试中的关键监控指标与深入分析
    在软件性能测试中,关键监控指标的选取至关重要。主要目的包括:1. 评估系统的当前性能,确保其符合预期的性能标准;2. 发现软件性能瓶颈,定位潜在问题;3. 优化系统性能,提高用户体验。通过综合分析这些指标,可以全面了解系统的运行状态,为后续的性能改进提供科学依据。 ... [详细]
  • 本文详细介绍了在CentOS 6.5 64位系统上使用阿里云ECS服务器搭建LAMP环境的具体步骤。首先,通过PuTTY工具实现远程连接至服务器。接着,检查当前系统的磁盘空间使用情况,确保有足够的空间进行后续操作,可使用 `df` 命令进行查看。此外,文章还涵盖了安装和配置Apache、MySQL和PHP的相关步骤,以及常见问题的解决方法,帮助用户顺利完成LAMP环境的搭建。 ... [详细]
author-avatar
星控-集中营_220
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有