- Mitglied seit
- 15. Mai 2008
- Beiträge
- 21.900
- Punkte für Reaktionen
- 14
- Punkte
- 0
Ich hab mir gedacht, dass wir bis Ostern ja ein wenig Zeit haben und deswegen mal einen Shell-Workshop auf der DS machen können.
Voraussetzung ist, dass man per Telnet, ssh, AdminTool oder sonst einem Tool Zugang zur Shell der DiskStation bekommen. Hierzu gibt es Hinweise in unserem Wiki.
Wer sollte Zugang zur Shell auf der DS haben? Der User 'root' natürlich, denn sinnvollerweise arbeitet man als Systemverwalter mit einer Shell.
Welche Shell nehmen wir? Die Standard-Shell aus der Firmware, also die 'ash'. Die 'ash' ist ein symbolischer Links auf die allgegenwärtige BusyBox, welche auf der DS ja die meisten Kommandos und Tools enthält (*guck BusyBox*). Man darf selbstverständlich auch andere Shells einrichten und verwenden. Allerdings sind die Beispiel hier alle auf der ash getestet und es kann sein, dass das ein oder andere dann ein wenig anders anders aussieht.
Zum Vorgehen. Es gibt ein paar 'Lektionen'. Dafür werden ich immer einen neuen Thread anfangen, damit man auch gut diskutieren kann. Sollten mir Fehler unterlaufen, werden ich sie (deutlich sichtbar) hier im ersten Post korrigieren, so dass man den Topicpost auch ohne Verfolgung der Diskussionen nacharbeiten kann.
Klar gibt es hier im Forum viele User mit Linux/Unix-Expertise; die wissen viel und brauchen hier eigentlich nicht mit zu machen, dürfen es aber gerne. Ich hätte da eine Bitte: man kann viele Beispiele auf sehr unterschiedlichen Wegen lösen und es wäre nicht immer hilfreich, alle möglichen Lösungswege auf einmal zu präsentieren. Manchmal werde ich also vielleicht etwas auch umständlicher ausführen als es sein müsste. Dann bitte nicht sofort in eine große Diskussion ausbrechen, weil das für einen Anfänger vielleicht verwirrend ist ... also Zwischenrufe gerne, aber bitte maßvoll, ok?! Fehlerkorrekturen sind natürlich immer gerne gesehen.
Der Workshop ist auch nicht als Konkurrenz gedacht zum Wiki. Dort werden wichtige Kommandos und Tool sehr knapp vorgestellt, die man zur Administration braucht. Der Workshop will mehr hinter die Kulissen schauen, als das im Wiki bislang der Fall ist. Und klar gibt es auch Querverweise.
Also jetzt geht es los!
Der Text 'Syno>' ist mein Shell-Prompt. 'Syno' deswegen, weil meine DiskStation 'Syno' heißt. Im Moment bin ich auf einer DS207+ mit DSM 2.3. Aber wie schon gesagt, man könnte den Workshop auch auf einem Linux-PC machen.
Die folgenden Kommandos bitte ausprobieren: 'whoami', 'uname', 'uname -a', 'pwd', 'pwda':
Jetzt noch 'clear' !!!
'whoami' spricht für sich. 'uname' steht 'UNIX-Name' und die Option '-a' steht für 'all'. 'pwd' bedeutet 'print working directory' auf gut Deutsch: gibt das Arbeitsverzeichnis aus, auf dem du gerade stehst.
Wir lernen: Linux-Kommandos sind wie Unix-Kommandos (commands). Das erste Wort ist der Name des Kommandos, danach folgen Parameter. Parameter mit einem '-' nennt man auch Optionen. Zwischen dem Kommandoname und den Parametern muss ein oder mehrere Leerstellen stehen (man darf oft auch Tabulatoren verwenden - ich rate davon ab). So ziemlich alles wird in Kleinbuchstaben geschrieben. Würde man es groß schreiben, funktioniert es (meist) nicht. Am Ende einer Kommandoeingabe muss man die Taste 'RETURN' bzw. 'ENTER' drücken, dann wird die Eingabe überprüft und wenn fehlerfrei auch ausgeführt. Es ist typisch für Unix/Linux, dass bei einem erfolgreich ausgeführten Kommando nichts weiter ausgegeben wird; manche kennen das ja auch vom Windows-Kommandofenster oder von MS-DOS oder so ...
Da man nicht unbedingt immer alle Kommandos auswendig kennt, nutzt man Handbücher zum Nachschlagen. Auf der DS gibt es das Online-Handbuch nicht aus Platzgründen, deswegen muss man auf eines ausweichen, das es im Web gibt, z. B. dieses hier: *guck Linux-Handbuch*
Es geht weiter mit 'who', 'date', 'cal und 'which':
'who' zeigt eine Liste der angemeldeten Linux-User an (nicht zu verwechseln mit den Usern des DSM, die haben nichts mit dem hier zu tun) und gibt einige Daten über die Anmeldung bzw. Verbindung aus. 'date' zeigt das Systemdatum an und 'cal' einen Monatskalender.
Huch! 'cal' ist bei mir nicht drauf!!!
'which' zeigt, wo die Datei des Tools liegt. Wenn da also nichts gefunden wird, ist das Tool entweder noch nicht installiert worden oder die Variable 'PATH' enthält keinen passenden Pfad zum Kommando* und man müsste, wenn es denn da ist, mit einem kompletten Pfad aufrufen, also z. B. '/opt/bin/cal'.
Offensichtlich ist das Tool 'cal' nicht installiert, wenn es nicht aufgerufen werden kann. Wer möchte, kann sich das per IPKG nachinstallieren: 'ipkg install util-linux-ng'.
*Wie kann man sich anschauen, was alles so in der Shell-Variablen 'PATH' drin steckt:
Die einzelnen Pfade werden durch einen ':' getrennt.
=====
So, das war es für den Teil 1. Viel Spass beim Ausprobieren.
Itari
PS. ach ja, wie kommt man eigentlich wieder nach Hause? exit
=========================================
Sinnvollerweise sind die Shell-Workshops aufeinander aufgebaut.
Shell-Workshop (2)
Shell-Workshop (3)
Shell-Workshop (4)
Shell-Workshop (5)
Shell-Workshop (6)
Shell-Workshop (7)
Shell-Workshop (8)
Shell-Workshop-(9)
Shell-Workshop (10)
Shell-Workshop (11)
Shell-Workshop (12)
Voraussetzung ist, dass man per Telnet, ssh, AdminTool oder sonst einem Tool Zugang zur Shell der DiskStation bekommen. Hierzu gibt es Hinweise in unserem Wiki.
Wer sollte Zugang zur Shell auf der DS haben? Der User 'root' natürlich, denn sinnvollerweise arbeitet man als Systemverwalter mit einer Shell.
Welche Shell nehmen wir? Die Standard-Shell aus der Firmware, also die 'ash'. Die 'ash' ist ein symbolischer Links auf die allgegenwärtige BusyBox, welche auf der DS ja die meisten Kommandos und Tools enthält (*guck BusyBox*). Man darf selbstverständlich auch andere Shells einrichten und verwenden. Allerdings sind die Beispiel hier alle auf der ash getestet und es kann sein, dass das ein oder andere dann ein wenig anders anders aussieht.
Zum Vorgehen. Es gibt ein paar 'Lektionen'. Dafür werden ich immer einen neuen Thread anfangen, damit man auch gut diskutieren kann. Sollten mir Fehler unterlaufen, werden ich sie (deutlich sichtbar) hier im ersten Post korrigieren, so dass man den Topicpost auch ohne Verfolgung der Diskussionen nacharbeiten kann.
Klar gibt es hier im Forum viele User mit Linux/Unix-Expertise; die wissen viel und brauchen hier eigentlich nicht mit zu machen, dürfen es aber gerne. Ich hätte da eine Bitte: man kann viele Beispiele auf sehr unterschiedlichen Wegen lösen und es wäre nicht immer hilfreich, alle möglichen Lösungswege auf einmal zu präsentieren. Manchmal werde ich also vielleicht etwas auch umständlicher ausführen als es sein müsste. Dann bitte nicht sofort in eine große Diskussion ausbrechen, weil das für einen Anfänger vielleicht verwirrend ist ... also Zwischenrufe gerne, aber bitte maßvoll, ok?! Fehlerkorrekturen sind natürlich immer gerne gesehen.
Der Workshop ist auch nicht als Konkurrenz gedacht zum Wiki. Dort werden wichtige Kommandos und Tool sehr knapp vorgestellt, die man zur Administration braucht. Der Workshop will mehr hinter die Kulissen schauen, als das im Wiki bislang der Fall ist. Und klar gibt es auch Querverweise.
Also jetzt geht es los!
Rich (BBCode):
Syno login: root
Password:
BusyBox v1.1.0 (2010.04.19-13:36+0000) Built-in shell (ash)
Enter 'help' for a list of built-in commands.
Syno>
Der Text 'Syno>' ist mein Shell-Prompt. 'Syno' deswegen, weil meine DiskStation 'Syno' heißt. Im Moment bin ich auf einer DS207+ mit DSM 2.3. Aber wie schon gesagt, man könnte den Workshop auch auf einem Linux-PC machen.
Die folgenden Kommandos bitte ausprobieren: 'whoami', 'uname', 'uname -a', 'pwd', 'pwda':
Rich (BBCode):
Syno> whoami
root
Syno> uname
Linux
Syno> uname -a
Linux Syno 2.6.15 #1157 Mon Apr 19 21:30:17 CST 2010 armv5tejl unknown
Syno> pwd
/root
Syno> pwda
-ash: pwda: not found
Jetzt noch 'clear' !!!
'whoami' spricht für sich. 'uname' steht 'UNIX-Name' und die Option '-a' steht für 'all'. 'pwd' bedeutet 'print working directory' auf gut Deutsch: gibt das Arbeitsverzeichnis aus, auf dem du gerade stehst.
Wir lernen: Linux-Kommandos sind wie Unix-Kommandos (commands). Das erste Wort ist der Name des Kommandos, danach folgen Parameter. Parameter mit einem '-' nennt man auch Optionen. Zwischen dem Kommandoname und den Parametern muss ein oder mehrere Leerstellen stehen (man darf oft auch Tabulatoren verwenden - ich rate davon ab). So ziemlich alles wird in Kleinbuchstaben geschrieben. Würde man es groß schreiben, funktioniert es (meist) nicht. Am Ende einer Kommandoeingabe muss man die Taste 'RETURN' bzw. 'ENTER' drücken, dann wird die Eingabe überprüft und wenn fehlerfrei auch ausgeführt. Es ist typisch für Unix/Linux, dass bei einem erfolgreich ausgeführten Kommando nichts weiter ausgegeben wird; manche kennen das ja auch vom Windows-Kommandofenster oder von MS-DOS oder so ...
Da man nicht unbedingt immer alle Kommandos auswendig kennt, nutzt man Handbücher zum Nachschlagen. Auf der DS gibt es das Online-Handbuch nicht aus Platzgründen, deswegen muss man auf eines ausweichen, das es im Web gibt, z. B. dieses hier: *guck Linux-Handbuch*
Es geht weiter mit 'who', 'date', 'cal und 'which':
Rich (BBCode):
Syno> who
USER TTY IDLE FROM HOST
root ttyp1 00:00m Mar 7 18:04 192.168.2.4
Syno> date
Mon Mar 7 18:11:51 CET 2011
Syno> cal
March 2011
Sa Su Mo Tu We Th Fr
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Syno> which cal
/opt/bin/cal
Syno>
'who' zeigt eine Liste der angemeldeten Linux-User an (nicht zu verwechseln mit den Usern des DSM, die haben nichts mit dem hier zu tun) und gibt einige Daten über die Anmeldung bzw. Verbindung aus. 'date' zeigt das Systemdatum an und 'cal' einen Monatskalender.
Huch! 'cal' ist bei mir nicht drauf!!!
'which' zeigt, wo die Datei des Tools liegt. Wenn da also nichts gefunden wird, ist das Tool entweder noch nicht installiert worden oder die Variable 'PATH' enthält keinen passenden Pfad zum Kommando* und man müsste, wenn es denn da ist, mit einem kompletten Pfad aufrufen, also z. B. '/opt/bin/cal'.
Offensichtlich ist das Tool 'cal' nicht installiert, wenn es nicht aufgerufen werden kann. Wer möchte, kann sich das per IPKG nachinstallieren: 'ipkg install util-linux-ng'.
*Wie kann man sich anschauen, was alles so in der Shell-Variablen 'PATH' drin steckt:
Rich (BBCode):
Syno> echo $PATH
/bin:/usr/bin:/sbin:/usr/syno/bin:/usr/syno/sbin:/usr/local/bin:/usr/local/sbin:/opt/bin:/opt/sbin
Die einzelnen Pfade werden durch einen ':' getrennt.
=====
So, das war es für den Teil 1. Viel Spass beim Ausprobieren.
Itari
PS. ach ja, wie kommt man eigentlich wieder nach Hause? exit
=========================================
Sinnvollerweise sind die Shell-Workshops aufeinander aufgebaut.
Shell-Workshop (2)
Shell-Workshop (3)
Shell-Workshop (4)
Shell-Workshop (5)
Shell-Workshop (6)
Shell-Workshop (7)
Shell-Workshop (8)
Shell-Workshop-(9)
Shell-Workshop (10)
Shell-Workshop (11)
Shell-Workshop (12)
Zuletzt bearbeitet: