Lägga till kommando i befintligt python script

Trädvy Permalänk
Medlem
Plats
Varberg
Registrerad
Nov 2012

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"?

RPi2 gaming

Trädvy Permalänk
Medlem
Plats
Långtbortistan
Registrerad
Mar 2007
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

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

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Jan 2004

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

Trädvy Permalänk
Medlem
Plats
Varberg
Registrerad
Nov 2012

@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?

RPi2 gaming

Trädvy Permalänk
Medlem
Plats
Varberg
Registrerad
Nov 2012

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

RPi2 gaming

Trädvy Permalänk
Medlem
Plats
Långtbortistan
Registrerad
Mar 2007
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

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

Trädvy Permalänk
Medlem
Plats
Varberg
Registrerad
Nov 2012

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

RPi2 gaming

Trädvy Permalänk
Medlem
Plats
/home
Registrerad
Dec 2005

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.

Bara gammalt skräp...

Trädvy Permalänk
Medlem
Plats
Varberg
Registrerad
Nov 2012

@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.

RPi2 gaming

Trädvy Permalänk
Medlem
Plats
/home
Registrerad
Dec 2005
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.

Bara gammalt skräp...