使用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
二、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
总结:
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>