• Opret dig
  • Glemt adgangskode

User account menu

  • Artikler
  • Forside
  • Forum
  • Nyheder
  • Log ind
Hjem
LinuxIN.dk

Snak med

Opret dig!

Af marlar | 09.11.2012 12:31

Hvordan kører jeg et pythonscript ved boot? [LØST]

Software
Jeg bruger dette script på min Guruplug så jeg kan printe fra mine android-enheder:

https://github.com/armooo/cloudprint

Det virker fint, men jeg kan ikke få det til at starte automatisk ved boot. Nu er det ikke fordi jeg booter den så tit, men alligvel ...

Fra kommandolinjen køres det enten som

cloudprint

eller

cloudprint -d hvis det skal køres som daemon.

Men hvordan køres det ved boot? Jeg har forsøgt at indsætte ovenstående linje i rc.local men det virker ikke.

Serveren kører Debian.

  • Log ind eller opret dig for at tilføje kommentarer

Kommentarer12

# 1

12 år 8 måneder siden

Permalink

Indsendt af m_abs den 9. november 2012 kl. 12:57

Permalink

Det burde være nok

Det burde være nok at sætte den ind i /etc/rc.local.

Hvor er den installeret? Det kan være at din /usr/local/bin ikke er i PATH når rc.local køres. Hvis det er problemet, så kan du bare angive absolut sti til cloudprint.

Står der noget i /var/log/messages?
  • Log ind eller opret dig for at tilføje kommentarer

# 2

12 år 8 måneder siden

Permalink

Indsendt af marlar den 9. november 2012 kl. 13:08

Permalink

Jeg bruger allerede en

Jeg bruger allerede en absolut sti, men det virker alligevel ikke. Scriptet kører dog :

grep -lf cloudprint

1770 /usr/bin/python /usr/local/bin/cloudprint


Men det fungerer ikke, det printer ingenting ud. Så snart jeg kører det direkte fra kommandolinjen virker det fint.

Det ligger i /usr/local/bin/cloudprint

Kan det være noget med den bruger det kører under i rc.local? Det er sådan at scriptet bruger nogle crendentials i /root/.cloudprintauth. Kan der være problemer med at tilgå denne under opstart?
  • Log ind eller opret dig for at tilføje kommentarer

# 3

12 år 8 måneder siden

Permalink

Indsendt af m_abs den 9. november 2012 kl. 16:26

Permalink

Scriptet kører som root

Scriptet kører som root indefra /etc/rc.local

Du kan bruge
su - [brugernavn] -c "[commando]"
  • Log ind eller opret dig for at tilføje kommentarer

# 4

12 år 8 måneder siden

Permalink

Indsendt af marlar den 9. november 2012 kl. 20:54

Permalink

Du kan bruge
su -

#3: Du kan bruge
su - [brugernavn] -c "[commando]"


Mener du ikke:

su -u [brugernavn] sh -c "[commando]"

Men det virker stadig ikke. Dette er den fulde linje i rc.local:

sudo sh -c "/usr/bin/python /usr/local/bin/cloudprint -d"

Jeg bruger ikke -u da det skal køre som root.

Er der nogen måde at "genkøre" rc.local til testbrug så man ikke skal boote hver gang?

Det irriterende er at der ikke er nogen logmeddelelser der kan hjælpe. Hverken i syslog eller messages etc.
  • Log ind eller opret dig for at tilføje kommentarer

# 5

12 år 8 måneder siden

Permalink

Indsendt af mrbrown79 den 11. november 2012 kl. 23:52

Permalink

sudo sh -c

#4: sudo sh -c "/usr/bin/python /usr/local/bin/cloudprint -d"

Hvis du bruger sudo, står den så ikke og venter på password - som så aldrig kommer?

rc.local køres som udgangspunkt af root, så sudo er næppe nødvendigt. Jeg har selv bakset med den slags nogle gange, og det lykkes mig som regel først at fatte sammenhængen, når jeg får den til at logge noget meningsfyldt.

Hvad med at prøve:
/usr/bin/python /usr/local/bin/cloudprint -d 2> /tmp/stderr.txt

Jeg tror ikke du kan eksekvere rc.local på en måde, så det svarer til situationen i forb. med boot.
  • Log ind eller opret dig for at tilføje kommentarer

# 6

12 år 7 måneder siden

Permalink

Indsendt af mjjzf den 13. november 2012 kl. 16:25

Permalink

Men du logger vel ikke ind

Men du logger vel ikke ind på din plug? Du starter den vel bare op, og så kører de tjenester, som de skal?
Kalder den nogle tjenester, som ikke er startet op på det tidspunkt, hvor du kører den? I så fald, hvad sker der, hvis du sleep'er den, så kommandoen kører efter det hele er oppe?
  • Log ind eller opret dig for at tilføje kommentarer

# 7

12 år 7 måneder siden

Permalink

Indsendt af m_abs den 13. november 2012 kl. 19:16

Permalink

Hvis du bruger sudo,

#5: Hvis du bruger sudo, står den så ikke og venter på password - som så aldrig kommer?
Ikke som root. Normalt så går kommandoer direkte gennem sudo hvis man er logget ind som root.

@marlar, hvordan ser din rc.local ud?
  • Log ind eller opret dig for at tilføje kommentarer

# 8

12 år 7 måneder siden

Permalink

Indsendt af marlar den 13. november 2012 kl. 23:39

Permalink

Men du logger vel ikke

#6: Men du logger vel ikke ind på din plug?

Det er jo netop det der er problemet. Men da cloudprint ikke virker ved boot er jeg nødt til at logge ind og starte programmet manuelt hvis jeg af en eller anden grund har genstartet serveren.

#6: Kalder den nogle tjenester, som ikke er startet op på det tidspunkt, hvor du kører den? I så fald, hvad sker der, hvis du sleep'er den, så kommandoen kører efter det hele er oppe?

Godt tænkt, men desværre virker det ikke.

#5: Hvad med at prøve:
/usr/bin/python /usr/local/bin/cloudprint -d 2> /tmp/stderr.txt


Vi er vist ved problemets kerne. I loggen står: Google username:

Med andre ord spørger programmet om mine loginoplysninger, noget det ellers normalt læser fra filen /root/.cloudprintauth. Eller med andre ord præcis det som jeg foreslår i #2.

Men hvorfor kan programmet ikke læse .cloudprintauth under opstart?
  • Log ind eller opret dig for at tilføje kommentarer

# 9

12 år 7 måneder siden

Permalink

Indsendt af mrbrown79 den 16. november 2012 kl. 13:05

Permalink

Er du kommet videre?#8: Men

Er du kommet videre?

#8: Men hvorfor kan programmet ikke læse .cloudprintauth under opstart?
Tja, jeg ville da tro at /root er mountet på det pågældende tidspunkt. Kan det være permissions eller noget andet?

Man kan sikkert læse tykke bøger om emnet. Man kan også bare gå i krig med med loggingen :)...

Tilføj i rc.local:
mount -l > /tmp/test.txt
ls -la /root >> /tmp/test.txt

(muligvis absolutte stier på mount og ls)

Eller er det evt. en mulighed at ligge credentials-filen et andet sted - fx. under /etc, hvor den vel egentlig har sin rette placering?
  • Log ind eller opret dig for at tilføje kommentarer

# 10

12 år 7 måneder siden

Permalink

Indsendt af marlar den 16. november 2012 kl. 16:22

Permalink

Nu fik jeg så svaret på

Nu fik jeg så svaret på stackexchange.

Scriptet har hardcoded stien til .cloudprintauth:

self.auth_path = os.path.expanduser('~/.cloudprintauth')

Og shell-expansion af ~ virker ikke ved boot.

Tricket er derfor at ændre i scriptet så der bruges /root i stedet.

Så virker det :)
  • Log ind eller opret dig for at tilføje kommentarer

# 11

12 år 7 måneder siden

Permalink

Indsendt af mich den 17. november 2012 kl. 01:43

Permalink

Og shell-expansion af ~

#10: Og shell-expansion af ~ virker ikke ved boot.

Er det noget du ved, eller noget du tror? Eller udleder af opførslen?

Expansion af ~ afhænger jo af hvem, der er bruger på det pågældende tidspunkt. Er det root eller su'er jeg til root, bliver ~ til /root/, men jeg ved ikke, om det virker anderledes, hvis man bruger sudo.

Under alle omstændigheder er moralen vel, at man bør bruge absolutte stier i scripts, hvor man er i tvivl.
  • Log ind eller opret dig for at tilføje kommentarer

# 12

12 år 7 måneder siden

Permalink

Indsendt af marlar den 17. november 2012 kl. 11:51

Permalink

Er det noget du ved,

#11: Er det noget du ved, eller noget du tror? Eller udleder af opførslen?

Det stod i svaret fra stackexchange og det virkede da jeg ændrede det til en absolut sti. Det tyder altså på at det er korrekt.

Men jeg kender ikke som sådan reglerne for shell-expansion.
  • Log ind eller opret dig for at tilføje kommentarer

Svar søges

llumos Unix-operativsystem, 0
Den er go 0
14. februar = I Love Free Software Day 0
Lokal fil-deling - for de dovne. 0
Linux fra begynder til professionel af O'Reilly 0

Seneste aktivitet

den er sjov 3
PCLinuxOS 29
Reserve kernel og btrfs 3
En snak om Linux-kompatibel software 12
"Intet realistisk alternativ" - mig i r*ven 17
Open source events i danmark? 3
Virtuel maskine? 4
Gode anmeldelser Zorin OS 17.3 8
Open Source-eksperimentet 5
Nulstilling af adgangskode 6
Ingen Mint 5
Linux App Store Flathub når 3 milliarder downloads 2
Digitaliseringsministeriet sætter gang i pilotprojekt om digital suverænitet 3
Mest sikker webbrowser 5
Firefox 2
Privatbeskeder 7
Backup/synkronisering? 3
BigLinux 5
Chatgpt satire 1
Læsning af databasefil i Firefox 2

© 2025 Linuxin og de respektive skribenter

Oprettet og drevet af nørder siden 2004 !