mikrocontroller.net

Forum: PC-Programmierung Raspberry: rc.local Problem


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Kaltenhof (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Das Script unten ist ausführbar (-rwxr-xr-x) und ich habe erwartet, dass 
es nach dem Login - via PuTTY als User pi - in das Verzeichnis 
/home/pi/webserver wechselt. Es wird aber weder die IP-Adresse angezeigt 
noch in das Verzeichnis gewechselt.

Rufe ich das Script von der Kommandozeile auf (z. B. mit sudo 
/etc/rc.local) dann wird es ausgeführt, die IP-Adresse angezeigt, jedoch 
nicht in das Verzeichnis  /home/pi/webserver gewechselt.

Was muss ich ändern, damit nach dem Login das Script ausgeführt wird?

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi

cd /home/pi/webserver

exit 0

von Sven B. (scummos)


Bewertung
0 lesenswert
nicht lesenswert
Du kannst kein Programm ausführen, was dein aktuelles Verzeichnis 
ändert. Das Working Directory ist eine Umgebungsvariable deines 
Prozesses, und ein Child-Prozess kann nicht die Umgebungsvariablen 
seines Parents ändern. cd ist ein Shell-Builtin und kein Programm, 
deshalb geht es da.

Du musst also ein Feature wie z.B. ~/.bashrc nutzen, um dein Ziel zu 
erreichen.

von Kaltenhof (Gast)


Bewertung
0 lesenswert
nicht lesenswert
@ Sven

Vielen Dank für deine Antwort, insbesondere der Hinweis auf bashrc hat 
mir geholfen.

von imonbln (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Kaltenhof schrieb:
> Rufe ich das Script von der Kommandozeile auf (z. B. mit sudo
> /etc/rc.local)

Glückwunsch rc.local ist seit dem Jahre 1983 obsolet! und irgendwie ein 
Zombie der einfach nicht sterben will...

Egal auf Modernen Systemen, solltest du deine Anforderungen anders 
Umsetzen. mein Vorschlag wäre, das

[code]
cd /home/pi/webserver
[code]

zu realisieren, indem du das Home verzeichnis auf selbiges legst. dein 
Freund hierfür sollte der Parameter -d des Programm usermod sein. Das 
Requirement das der Benutzer sofort in dem Verzeichnis landet, stell ich 
mal nicht zur Frage, obwohl es zumindest unerwartet ist.

für das zweite Requirement das die Ip beim Login via Putty angezeigt 
wird möchte ich mal pam_motd in den Raum Werfen, die Konfiguration kann 
man zum Beispiel hier Bewundern. 
https://ownyourbits.com/2017/04/05/customize-your-motd-login-message-in-debian-and-ubuntu/

Generell möchte ich auch anregen, zu Hinterfragen ob /home/pi/webserver 
der geeignete Ort für den Inhalt deines Webserver ist, laut Filesystem 
Hierarchy Standard wäre es eher /srv/www oder was anderes unter /srv. 
Allerdings machen das Debian und Ubuntu auch nicht sondern nutzen 
stattdessen /var/www. Jedenfalls nichts unter /home/pi.

von Sven B. (scummos)


Bewertung
0 lesenswert
nicht lesenswert
Hm, du argumentierst also dass der Webserver-Kram nicht in 
/home/pi/webserver liegen sollte (was ich ziemlich normal finde, mache 
ich auf meinem Server auch so), weil das non-standard ist, und im selben 
Post  schlägst du vor, das home-Verzeichnis des Benutzers 'pi' auf 
/home/pi/webserver zu setzen, was tausendmal mehr non-standard ist? :D

von imonbln (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Sven B. schrieb:
> und im selben
> Post  schlägst du vor, das home-Verzeichnis des Benutzers 'pi' auf
> /home/pi/webserver zu setzen, was tausendmal mehr non-standard ist? :D

ja etwas schizophren, ich weiss :D, aber Defakto versucht der TO genau 
das mit seinem Hack, das homeverzeichnis umzubringen und wenn es Ihn 
glücklich macht, dann bitte wenigstens Richtig :P

von Bauform B. (bauformb)


Bewertung
0 lesenswert
nicht lesenswert
imonbln schrieb:
> Kaltenhof schrieb:
>> Rufe ich das Script von der Kommandozeile auf (z. B. mit sudo
>> /etc/rc.local)
>
> Glückwunsch rc.local ist seit dem Jahre 1983 obsolet! und irgendwie ein
> Zombie der einfach nicht sterben will...

weil es einfach nur funktioniert, so richtig unix-artig? Nur für diese 
Aufgabe hier ist es natürlich garnicht gedacht.

> Generell möchte ich auch anregen, zu Hinterfragen ob /home/pi/webserver
> der geeignete Ort für den Inhalt deines Webserver ist, laut Filesystem
> Hierarchy Standard wäre es eher /srv/www oder was anderes unter /srv.
> Allerdings machen das Debian und Ubuntu auch nicht sondern nutzen
> stattdessen /var/www. Jedenfalls nichts unter /home/pi.

Ungefähr seit 1983 kennen Webserver das public_html Verzeichnis unter 
$HOME...
https://httpd.apache.org/docs/2.4/howto/public_html.html

von Larry (Gast)


Bewertung
0 lesenswert
nicht lesenswert
> das homeverzeichnis umzubringen

Was eine schlechte Idee ist, zumal in einem $HOME auch noch
sicherheitsrelevantes Zeug wie ssh-Keys u. ae. liegen kann.

Fuer so Directorywechselaktionen kann man sich ein paar
aliase definieren und die passend *rc des Accounts tun.

alias cdw='cd /home/pi/webserver'

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.