Lägga till kommando i befintligt python script

Permalänk

Lägga till kommando i befintligt python script

Hej,

Ska fixa en knapp till min RPi2 som ska avmontera USB och stänga av en RPin.
Har hittat denna guiden men behöver hjälp med att lägga till mitt "umount" kommando.

Så här ser scriptet ut:

#!/bin/python # Simple script for shutting down the raspberry Pi at the press of a button. # by Inderpreet Singh import RPi.GPIO as GPIO import time import os # Use the Broadcom SOC Pin numbers # Setup the Pin with Internal pullups enabled and PIN in reading mode. GPIO.setmode(GPIO.BCM) GPIO.setup(18, GPIO.IN, pull_up_down = GPIO.PUD_UP) # Our function on what to do when the button is pressed def Shutdown(channel): os.system("sudo shutdown -h now") # Add our function to execute when the button pressed event happens GPIO.add_event_detect(18, GPIO.FALLING, callback = Shutdown, bouncetime = 2000) # Now wait! while 1: time.sleep(1)

Vart ska jag lägga in "sudo umount umount /dev/sda1"? Ska jag skippa "sudo"?

Permalänk
Medlem
Skrivet av Anglaborg:

Hej,

Ska fixa en knapp till min RPi2 som ska avmontera USB och stänga av en RPin.
Har hittat denna guiden men behöver hjälp med att lägga till mitt "umount" kommando.

Så här ser scriptet ut:

#!/bin/python # Simple script for shutting down the raspberry Pi at the press of a button. # by Inderpreet Singh import RPi.GPIO as GPIO import time import os # Use the Broadcom SOC Pin numbers # Setup the Pin with Internal pullups enabled and PIN in reading mode. GPIO.setmode(GPIO.BCM) GPIO.setup(18, GPIO.IN, pull_up_down = GPIO.PUD_UP) # Our function on what to do when the button is pressed def Shutdown(channel): os.system("sudo shutdown -h now") # Add our function to execute when the button pressed event happens GPIO.add_event_detect(18, GPIO.FALLING, callback = Shutdown, bouncetime = 2000) # Now wait! while 1: time.sleep(1)

Vart ska jag lägga in "sudo umount umount /dev/sda1"? Ska jag skippa "sudo"?

Du lägger in ditt kommando på en ny rad ovanför

os.system("sudo shutdown -h now")

Ev kan du behöva lägga in en paus på någon sekund eller så också för att den skall hinna demontera disken innan shutdown körs.

Som du ser i koden ovan så använder scriptet sudo för avstängningskommandot. Gör likadant med umount (dvs med sudo) så fungerar det nog bäst.

Skickades från m.sweclockers.com

Visa signatur

Det finns bara två sorters hårddiskar: de som har gått sönder och de som skall gå sönder.

Permalänk
Medlem

Fast behövs en umount? Alla filsystem avmonteras ju vid en reboot och shutdown.

Permalänk

@zarkov: Tack för svar!

# Our function on what to do when the button is pressed def Shutdown(channel): sudo umount /dev/sda1 time.sleep(2) os.system("sudo shutdown -h now")

Är det såhär du menar? Behöver jag inte bry mig om "def Shutdown(channel):", "os.system" osv?

Permalänk

@iXam: Vad jag har läst så skulle det vara bäst och säkrast. Kanske inte stämmer? Helt ny på detta...

Permalänk
Medlem
Skrivet av Anglaborg:

@zarkov: Tack för svar!

# Our function on what to do when the button is pressed def Shutdown(channel): sudo umount /dev/sda1 time.sleep(2) os.system("sudo shutdown -h now")

Är det såhär du menar? Behöver jag inte bry mig om "def Shutdown(channel):", "os.system" osv?

Du får skriva det på samma sätt som shutdown-kommandot, annars vet inte Python om att det skall skicka kommandot till operativsystemet utan försöker exekvera det själv.

Def.shutdown skapar en funktion som kan anropas på annat håll i scriptet, tex vid knapptryckning, och eftersom du vill köra både umount och shutdown på samma knapptryck räcker det med en def.

# Our function on what to do when the button is pressed def Shutdown(channel): os.system("sudo umount /dev/sda1") time.sleep(2) os.system("sudo shutdown -h now")

Skickades från m.sweclockers.com

Visa signatur

Det finns bara två sorters hårddiskar: de som har gått sönder och de som skall gå sönder.

Permalänk

@zarkov: Tack så jättemycket för hjälpen!

Permalänk
Medlem

En liten parantes är att sda1 med största sannolikhet är fel då det antagligen är minneskortets partition. Men du kanske har koll på det
Om inte så är väl UUID att rekommendera om det är samma usbminne som skall användas.

Visa signatur

Bara gammalt skräp...

Permalänk

@bardbard:
Har för mig att sda1 var USB-minnet (har inte tillgång att kolla nu...) men om det inte är så, ska jag ändra "/dev/sda1" till "UUID=xxx-xxx-xxx" i python scriptet?
Är samma USB som används.

Permalänk
Medlem
Skrivet av Anglaborg:

@bardbard:
Har för mig att sda1 var USB-minnet (har inte tillgång att kolla nu...) men om det inte är så, ska jag ändra "/dev/sda1" till "UUID=xxx-xxx-xxx" i python scriptet?
Är samma USB som används.

Yes det stämmer, kan vara smartare då det finns risk att minneskortet och usbminnet "byter" plats.

Visa signatur

Bara gammalt skräp...