嗨,我正在尝试检测USB是否连接到客户端。我的逻辑是,如果添加了新磁盘,则意味着要获取磁盘的总数,这意味着如果将USB从客户端中删除,则意味着要在客户端上添加新设备,这意味着要从客户端中删除设备,因此我会不断检查循环,以使客户端显示total = 1或total = 2 ,1表示仅1个磁盘可用2表示已添加新设备,依此类推。它工作正常,但是sock.send("Device Added in " + username) sock.send("Device remove in " + username)
这些命令不起作用,如果我从客户端插入USB或从USB插入,我不会在服务器端收到这些消息。我不确定我的if else
条件是否正确。
操作系统linux
这是客户端代码
from socket import *
import os, string, time
import getpass
host = 'localhost'
port = 52000
username = getpass.getuser()
sock = socket()
# Connecting to socket
sock.connect((host, port)) # Connect takes tuple of host and port
def detect_device(previous):
total = os.system(' lsblk | grep disk | wc -l')
time.sleep(3)
# if conditon if new device add
if total<previous:
sock.send("Device Added in " + username)
# if no new device add or remove
elif total==previous:
detect_device(previous)
# if device remove
else:
sock.send("Device Removed in " + username)
# Infinite loop to keep client running.
while True:
data = sock.recv(1024)
if (data == 'Hi'):
while True:
detect_device(os.system(' lsblk | grep disk | wc -l'))
sock.close()
我在客户端获得的输出是
1 1 1 2 2 2 2 1 1
1表示当前总磁盘数为1,如果我插入usb,则磁盘总数为2,然后1表示我断开USB连接
答案 0 :(得分:0)
好吧,我将其修复为os.system在输出中返回0,所以我尝试使用subprocess.run并运行正常。