呼叫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()