Заранее извиняюсь, если об этом уже спрашивают, но я провел последние несколько часов, пытаясь найти предыдущие ответы, поэтому я потерян.
У меня есть следующий скрипт python, работающий на пи ноль, чтобы обнаружить RFID-карты и действовать как HID-клавиатура для ввода моего пароля. Это не безопасно, я знаю, но работает отлично.
Работает, когда IS SH в pi отдельно и запускает скрипт. Я пытаюсь заставить его запускаться при загрузке, не работает слишком хорошо. Я пробовал bashr c, init.d и любые другие способы, которые я нашел в своих начинаниях, поэтому любая другая помощь будет принята с благодарностью.
Я также пробовал показывать экран через bash скрипт, обеспокоенный тем, что для моего скрипта потребуется активная оболочка, но безрезультатно.
Вот мой скрипт:
import time
import RPi.GPIO as GPIO
import MFRC522
import signal
import datetime
now = datetime.datetime.now()
continue_reading = True
NULL_CHAR = chr(0)
def writetofile(scr):
f = open("logs.txt", "a")
tim = now.strftime("%Y-%m-%d %H:%M:%S")
if scr == "error":
f.write("Got error at ")
f.write(tim)
f.write("\r\n")
else:
f.write("Got Success with ")
f.write(scr)
f.write(" at ")
f.write(tim)
f.write("\r\n")
# function to send the data
def write_report(report):
with open('/dev/hidg0', 'rb+') as fd:
fd.write(report.encode())
def login():
##writes my password, commands removed for stack :)
def uidToString(uid):
mystring = ""
for i in uid:
mystring = format(i, '02X') + mystring
return mystring
def end_read(signal, frame):
global continue_reading
print("Ctrl+C captured, ending read.")
continue_reading = False
GPIO.cleanup()
signal.signal(signal.SIGINT, end_read)
MIFAREReader = MFRC522.MFRC522()
while continue_reading:
# Scan for cards
(status, TagType) = MIFAREReader.MFRC522_Request(MIFAREReader.PICC_REQIDL)
# If a card is found
if status == MIFAREReader.MI_OK:
print ("Card detected")
# Get the UID of the card
(status, uid) = MIFAREReader.MFRC522_SelectTagSN()
# If we have the UID, continue
if status == MIFAREReader.MI_OK:
carduid = uidToString(uid)
if carduid == '75AC5685':
print("KeyRing")
writetofile("Keyring")
login()
elif carduid == 'D539F1FD':
print("Keycard")
writetofile("Keycard")
login()
print("Card read UID: %s" % carduid)
else:
print("Authentication error")
writetofile("error")
Спасибо !!