Python 远程操作 Linux

Linux 系统的 远程操作

   在平时的工作中使用到的一个 Python 小功能;因为在开发代码后需要将代码远程部署到 Linux 系统;代码数量过多,并且有多台新的远程机器需要操作,因此想到的 使用 Python 代码 进行自动远程部署代码,并且对使用环境进行检测是否缺少 某些 Python 的 第三方包。

使用的包:paramiko

Linux 连接

# host:ip 地址;
# port:开放的 ssh 端口;  (一般 默认为 22)
# userName:用户名
# password:连接密码

# ftp 连接方式		可以用于 传输文件使用
transport = paramiko.Transport(sock=(host, port))
transport.connect(username=userName, password=password)
ftp = paramiko.SFTPClient.from_transport(transport)			# 实例

session = transport.open_session()

# ssh 连接方式   
ssh = paramiko.SSHClient()
ssh._transport = self.transport
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname=host, username=userName, password=password, port=port)

session.get_pty()
session.invoke_shell()

以上的 两种 连接方式具备不同的 性质和功能;需要根据不同的应用方式进行选择;

Linux 与 Windows 文件 传输

一、 Windows to Linux:

将本地的 文件 上传到 Linux 系统

# 使用 上述 提到的 ftp 连接方式
sftp = ftp
# localpath  为本地文件的绝对路径。如:D:\test.py
# remotepath 为服务器端存放上传文件的绝对路径,而不是一个目录。如:/tmp/my_file.txt

sftp.put(localpath, remotepath)		# 上传 文件 指令

二、 Linux come back Windows:

将 Linux 系统的 文件 下载到本地

# 使用 上述 提到的 ftp 连接方式
sftp = ftp
# localpath  为本地文件的绝对路径。如:D:\test.py
# remotepath 为服务器端存放上传文件的绝对路径,而不是一个目录。如:/tmp/my_file.txt

sftp.get(remotepath, localpath)		# 上传 文件 指令

Linux 远程 操作:

一、SSH 的 连接方式:

# 使用 上述的 ssh 连接方式

stdin, stdout, stderr = ssh.exec_command(command)

# 使用的 命令成功 后返回的结果 为:stdout
# 当 Linux 命令 报错时 返回的 命令为: stderr 

SSH 的 连接有一定的 缺点;每一次的 操作 都属于 新的 窗口连接
因此使用 连续 命令操作时 使用 \n 对每一条命令进行分割

二、session 的 连接方式:

# 使用 上述的 session 的方式 连接

session.send(b"ls \n")		# 使用 时 注意 要用  \n  结尾

# 这个 连接方式 没有返回的 结果内容  想要知道 命令结果 则需要定义一个 buffer 
# 将 界面的 内容放置 缓存 实时 反馈查看  方法如下:

def get_buffer(self):   # 通过 该函数 持续获取结果  作用与大家打开窗口一样的效果
    while True:
        buffer = self.session.recv(999999)
        print(buffer.decode(errors='ignor'))
        if buffer.endswith(b"KeyboardInterrupt"):		# 对于需要 结束的 情况 进行判断
        	return

session 的 连接方式 是可持续连接的;中间不会因为 终端而 无效
比如:使用 tmux 窗口时,需要 连续的操作可以 完成连续操作

总结:

使用 Python 操作 Linux 时需要对 Linux 的命令操作熟悉;
对于 Linux 的 系统结构 熟悉;学习 Linux的基本操作等;
如果 想要 熟悉 Linux 以及需要测试 Python的 远程操作 Linux的 命令;可以下载一个虚拟机 ;装载一个虚拟的 系统环境,比如:kali ,

装好虚拟 Linux 系统后需要开启 Linux 的 SSH 服务才可以使用;
开启 SSH 服务 命令:service ssh start
关闭 SSH 服务 命令:service ssh stop
查看 IP 命令:ifconfig
默认 端口 为:22
用户名和密码:就是登录使用的账号密码

Linux 常用命令:

mv 文件地址  目标移动目录		# 文件移动命令
cd 文件目录		# 切换文件夹
ls  查看所含文件
rm -rf 强删
wget 文件地址		# 下载文件  http
unzip zip文件		# 解压文件

tmux 窗口使用:
下载安装 : sudo yum install tmux
查看存在窗口:tmux ls
重连存在窗口:tmux attach -t 窗口名字

杀死会话
tmux kill-session命令用于杀死某个会话。
# 使用会话编号
$ tmux kill-session -t 0
# 使用会话名称
$ tmux kill-session -t <session-name>
tmux kill-session -all

切换会话。
tmux switch命令用于切换会话。
# 使用会话编号
$ tmux switch -t 0
# 使用会话名称
$ tmux switch -t <session-name>

本文 提到的 Linux 操作命令 不多 ;大家可以自行搜索一下;
通过 Python 的远程操作方式,可以将需要部署的 程序 写成 一个字典、列表或者 Excel 表格;也可以使用 数据库 进行 控制部署
当然远程程序的定时部署还有许多其他的方法可以部署。

  • 3
    点赞
  • 14
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:1024 设计师:我叫白小胖 返回首页
评论

打赏作者

渊季

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值