python指令碼練習筆記

liteblue發表於2020-10-07

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

相關文章