因为一些特殊需求(也可能是太闲),我需要使用python生成自定义的文件,通过windows10的系统命令传到我的远程centos7服务器。这个工具中我使用了python的界面库,使得通过一个图形界面去点一下就能帮我完成传输,要实现的功能很简单,但是实现的过程很有趣,接下啦我就在这里做一下记录。
前提条件
- 操作系统:新版windows10(因为新版的增加了一些字符命令,比如scp)
- python3版本:推荐在windows10应用商店直接下载,或在字符界面直接输入python3,会自动跳转
- 工具依赖的库:tkinter(如果是以上方法安装的python3默认已经安装)
- 因为是跨主机的文件传输,所以事先需要做好服务器间基于key验证(不了解的同学可自行百度)
实现代码
# coding: utf-8
from tkinter import *
# 导入ttk
from tkinter import ttk
# 导入os模块,用来执行宿主机命令
import os
class App:
def __init__(self, master):
self.master = master
self.initWidgets()
def initWidgets(self):
# 创建style对象,用来管理ttk组件样式
style = ttk.Style()
style.configure("fkit.TPanedwindow", background="darkgray", relief=RAISED)
pwindow = ttk.Panedwindow(self.master,
orient=VERTICAL, style="fkit.TPanedwindow")
pwindow.pack(fill=BOTH, expand=1)
# 创建Panedwindow组件,通过style属性设置分割线
self.first = Label(pwindow, text="hekko world", height=2, font=('Verdana',10), fg='green')
# 调用add方法添加组件,每个组件占一个区域
pwindow.add(self.first)
# 创建button按钮
okBn = Button(pwindow, text="on", width=30, height=2, bg='pink', fg='black',
command=self.open_on # 点击按钮调用self.open_on实例
)
okBn2 = Button(pwindow, text="off", width=30, height=2, bg='pink', fg='black',
command=self.open_off
)
okBn3 = Button(pwindow, text="reboot", width=30, height=2, bg='pink', fg='black',
command=self.open_reboot
)
okBn4 = Button(pwindow, text="Enter", width=30, height=2, bg='pink', fg='black',
command=self.open_enter
)
# 调用add方法加入这些button
pwindow.add(okBn)
pwindow.add(okBn2)
pwindow.add(okBn3)
pwindow.add(okBn4)
def files(self,str):
hi = open("test.txt","w")
hi.write( str )
hi.close()
self.first['text']='已写入内容:'+str
def open_on(self):
str = "on"
self.files(str)
return 0
def open_off(self):
str = "off"
self.files(str)
return 0
def open_reboot(self):
str = "reboot"
self.files(str)
return 0
def open_enter(self):
# 传送本地文件到远程服务器,填入远程服务器的ip地址
os.system('scp -P 1919 test.txt [email protected]:/data')
self.first['text']='传输结果:成功'
return 0
root = Tk()
root.title("服务器间文件传输")
App(root)
root.mainloop()
效果如图:
功能介绍:
- 点击前三个按钮会在执行脚本的目录生成一个test.txt的文件,如果点的是on,文件内容就是on,依次类推。对脚本稍加修改,就可以自定义写入的内容
- 生成文件以后第一行的标签,会显示“已生成内容:on”,点击不同按钮结果显示内容不同
- 当文件已经生成以后点击Enter按钮,会把生成的文件发送到指定服务器
结语:
有不懂的地方请留言,我们共同进步