调用socket,用网络接受数据linux_file_open_helper_daemon.py
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import socket
import os, sys
# 建立一个服务端
server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#server.bind(('localhost',6999)) #绑定要监听的端口
server.bind(('192.168.80.1',17859)) #绑定要监听的端口
server.listen(2) #开始监听 表示可以使用五个链接排队
while True:# conn就是客户端链接过来而在服务端为期生成的一个链接实例
conn,addr = server.accept() #等待链接,多个链接的时候就会出现问题,其实返回了两个值
print('accept:', conn,addr)
try:
data = conn.recv(1024) #接收数据
print('recive:',data.decode()) #打印接收到的数据
#fd = os.open("Z:\\.local\\share\\win_app_helper\\prefer_open",os.O_RDWR)
#ret = os.read(fd,256)
#print("ret:",ret)
#os.close(fd)
test_str = data.decode()
print('npp data=', test_str.find('npp ', 0))
print('explorer data=', test_str.find('explorer ', 0))
if test_str.find('npp ', 0) == 0 or test_str.find('explorer ', 0) == 0 :
cmd = data.decode()
else:
cmd = 'C:\\Users\\ag\\work\\backup\\win_scripts\\open_prefer_linux_file.bat'
result = os.popen(cmd,'r',1)
print('result', result)
msg = 'recv_ok, accept cmd='+cmd
conn.send(msg.encode('utf-8')) #然后再发送数据
except ConnectionResetError as e:
print('error:ConnectionResetError!')
break
conn.close()
调用socket,用网络发送数据win_open_notifier.py
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import sys
import socket# 客户端 发送一个数据,再接收一个数据
client = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #声明socket类型,同时生成链接对象
client.connect(('192.168.80.1',17859)) #建立一个链接,连接到本地的6969端口
# addr = client.accept()
# print '连接地址:', addr
#print 'INPUT ARGS=', sys.argv[1:]
#msg = 'open some linux file.' #strip默认取出字符串的头尾空格
#msg = sys.argv[1:]
msg = sys.argv[1]
#print 'INPUT msg=', msg
client.send(msg.encode('utf-8')) #发送一条信息 python3 只接收btye流
data = client.recv(1024) #接收一个信息,并指定接收的大小 为1024字节
print('recv:',data.decode()) #输出我接收的信息
client.close() #关闭这个链接
提醒do_sth.pyw
import datetime
import time
from win10toast import ToastNotifier
toaster = ToastNotifier()
def doSth():
print('test')
toaster.show_toast(u'活动提醒', u'do sth', icon_path="custom.ico", duration=-1)
def main():
while True:
# 做正事,一天做一次
doSth()
# 不到时间就等20秒之后再次检测
time.sleep(45*60)
main()