Supportnet Computer
Planet of Tech

Supportnet / Forum / Linux

Hilfe für zwei Shell-Skript-Aufgaben!





Frage

Hi! Ich bin in einem Volkshochschulkurs für Linux. Aber irgendwie komm ich nicht klar anhand der Dinge die ich da mitkriege. Ich muss jetzt folgene zwei Skripte schreiben: 1.Skript: - ein Aufrufparameter soll entgegen genommen werden - und soll hinter dem Text: "Ihre Eingabe lautete:" ausgegeben werden - der Paramter und das aktuelle Datum sollen in die Datei ´log´ geschrieben werden - die Daten in der Datei ´log´ sollen nicht überschrieben werden, sondern nach jeder Ausgabe weiter geführt werden 2.Skript: - das Skript soll auf unterschiedliche Parameter reagieren - wenn es mit ´users´ aufgerufen wird, dann sollen alle Zeilen der Datei ´/etc/passwd´ ausgegeben werden. Sortiert und seitenweise! - wenn das Skript mit dem Befehl "ps-root" aufgerufen wird, muss der Befehl ´ps -ef´ starten - dort sollen alle Zeilen gefiltert werden wo das Wort ´root´ vorkommt. Seitenweise Anzeige. - wird das Skript mit dem Parameter -help augerufen, soll ein Hilfetext erscheinen. - ohne Parameter soll nichts passieren Um niemanden zu nahe zu treten, aber kann es sein, dass Leute die sich richtig gut in der Materie auskennen, keine guten Lehrer sind? Ich steige nicht hinter so manche Erklärung und auch die Abläufe werden manchmal einfach zu kurz dargestellt, für jemanden der keine Ahnung von Linux hat. Aber egal ... für jede Hilfe bin ich dankbar! Gruß meteor

Antwort 1 von _Lemming

Ich hab mich mal ne Stunde hingesetzt und -Interessenhalber- die Shellscripte gemacht (ich bin selber Anfänger und dachte das es evtl. für mich sinnvoll wäre)

1.: Bei Linuxern wirds gar net gerne gesehen wenn man direkt die Lösung eines Problems verlangt und nicht zu einem Teilproblem ne Frage stellt, aber aus o.g. Grund hab ich mich trotzdem mal hingesetzt.
2.: Das ist simples Anfänger-Niveau und ich konnte die Aufgabe fast alleine mit dem Buch "Einstieg in Linux" vom Galileo-Verlag lösen (soll jetzt keine Werbung sein aber das Buch ist zu empehlen!), evtl. solltest du also leiber in ein Buch anstatt einen Anfängerkurs investieren!

jetzt die Scripte:


#Script1
#!/bin/sh #Pfad zum Interpreter angeben
#Bildschirmausgabe:
echo "Ihre Eingabe lautete: $1"
#Logdateiausgabe:
echo "`date` $1" >> ausgabe.log


Zur Erklärung:
hinter # sind immer Kommentare!
$1 ist der erste, $2 der zweite usw. Parameter
VORSICHT: Das "date" muss, damit es als shellcommando gewertet wird in Backquotes stehen!!(diese kann man mit UMSCHALT + der_Taste_neben_ß erzeugen!)
------------------------------------------------------------------------

Script 2 ist NICHT ganz vollständig, da ich keine Ahnung habe von manchen Befehlen! (diese Unbekannten stellen habe ich im Code durch C++ Kommentare genkennzeichnet (alles im Bereich von /* bis */ musst du also im Originalscript weglassen!!))



#Script2
#!/bin/sh
if [ -z $1 ]
then
echo
echo "Kein Parameter!"
echo "help für Hilfe!"
echo
elif [ "$1" = "user" ]
then
sort /etc/passwd | less
elif [ "$1" = "ps-root" ]
then
ps -ef | /*ausgabe von ps -ef auf root filtern - keine Ahnung wie??*/ | less
elif [ "$1" = "help" ]
then
echo
echo ´ "user" gibt /etc/passwd sortiert und seitenweise aus´
echo ´ "ps-root" gibt alle root-Prozesse aus´
echo ´ "help" gibt diese Hilfe aus´
echo
else
echo
echo ´Parameter falsch - verschrieben?´
echo

-------------------------------------------------------------------
Ich hab leider keinen Schimmer mit welchem Befehl man ausgabe auf einen bestimmten string untersuchen lassen kann (die sache mit "root" filtern)..hat jemand da Ahnung wie man das realisieren könnte?

P.S.: Die Grundfunktionen gehen einigermaßen ABER ich konnte aufgrund des nichtfunktionierenden "|" zeichens bei Slax keine FIFO´s ausprobieren, rein theoretisch sollte das aber funktionieren..

Melde dich mal..obs funzt...fragen..etc....

Antwort 2 von Schwedeii

Zitat:
Um niemanden zu nahe zu treten, aber kann es sein, dass
Leute die sich richtig gut in der Materie auskennen, keine guten
Lehrer sind?

Nun, auch ich möchte niemandem zu nahe treten, aber das
Problem kommt mir sehr vertraut vor. Ich arbeite schon eine
ganze Weile mit Linux, aber es kommt immer wieder vor, dass das
eine oder andere Problem nicht gelöst werden kann oder will.
Klar, es ist schon logisch, Linux ist ein OS, bei dem viele in Ihrer
Freizeit dran arbeiten, da möchte man auch seine Mit-User dazu
bringen, mit zu machen. Aber wie soll das gehen, wenn kein
Basis-Wissen da ist? Nicht jeder hat Info studiert, und diese Leute
landen dann notweise bei OpenSuSE etc.
Ich stehe grad wieder vor diesem Problem: DSL mit einem
486-ger 32MB RAM. Da sollte man glauben, dass es keine
Probleme gibt, aber Fehlanzeige. Der Rechner fährt sauber hoch,
aber mit Grund-VGA (640x480x16). Da geht natürlich eine Menge
Software erst gar nicht. Es hat lange gedauert, bis ich den Xvesa
gegen den XF86_SVGA austauschen konnte, und nun stehe ich
vor dem Problem, dass der nur als Super-User läuft. So in´s
Internet? Inakzeptabel, verstößt auch gegen jede
Linux-Philosophie.
Angeblich soll im Internet alles genau dokumentiert sein, aber da
liegen einige sowas von daneben!
Ich finde nigendwo eine Doku darüber, wie das XF86-System
wirklich funktioniert, nur immer wieder, mit welchem Tool das
eingestellt wird.
Wenn ich´s wissen will, muß ich mir Bookware kaufen, die extrem
überteuert ist und in 2 Jahren auch noch völlig überholt. Ich
bekomme immer wieder das Gefühl, man will unter sich bleiben.

Antwort 3 von bored

Zitat:
Es hat lange gedauert, bis ich den Xvesa
gegen den XF86_SVGA austauschen konnte, und nun stehe ich
vor dem Problem, dass der nur als Super-User läuft.

Und? Das ist ja auch der Xserver. Der läuft eh nur lokal und wenn man das einstellt, dann lässt er auch keine Remoteverbindung zu.
Xterm und Konsorten sind Clients für den Xserver und die laufen mit normalen Benutzerrechten.

Im Heise-Forum hatte mal jemand einen Link geschickt, wo das alles ganz hervorragend erkilärt wurde, allerdings finde ich den nicht mehr...
Ich poste den mal, sobald ich den habe...

Bisher gefunden:
http://www.linuxfibel.de/xcliserv.htm

Antwort 4 von bored

ps -ef | /*ausgabe von ps -ef auf root filtern - keine Ahnung wie??*/ | less 


Zitat:
Ich hab leider keinen Schimmer mit welchem Befehl man ausgabe auf einen bestimmten string untersuchen lassen kann

Das kann das Programm grep.

Die Zeile müsste dann ungefähr so aussehen:

ps -ef  | grep root | less

Prozesse mit infos ausgeben -> die Ausgabe dem Programm grep als Standardeingabe geben -> grep filtert alle Zeilen in denen die Zeichenfolge "root" vorkommt -> gefilterte Ausgabe von grep weitergeben als Standardeingabe für less, welches das ganze (scrollbar) ausgibt.

Antwort 5 von bored

Antwort 6 von _Lemming

@bored

thx für die Komplettierung meines Scriptes...dachte schon es guckt niemand an...hab mir auch n bissl mühe gegeben...

..aber meteor2000 scheint nicht an seinen Scripten interessiert zu sein...naja...

@Schwedeii
..man muss halt in der Linuxwelt n bissl suchen und ab un zu geht es einem auf den Geist das man überall Lesen muss ohne Ende aber nach einer weile habe ich bisher immer eine Lösung gefunden...
und sieh´ es doch mal so: Welches Windoof hätte auf nem 486er DSL geschafft...KEINS...erst unter Windoof das TCP/IP installieren etc. hätte auch mühe gekostet (und bevor hier jetzt jemand loslabert vonwegen TCP/IP installieren: auf nem 486er läuft doch nur 95 und 98 OK, der rest (Win2k usw.) geht damit net bzw. macht net wirklich spaß).
P.S. bored hat recht: solange der Xserver nur auf dem Loopback Interface horcht sehe ich da keine Sicherheitsprobleme...

@meteor2000
wenn du schon Leute anhältst dir zu helfen dann bedank dich wenigstens oder so..wieder so ein ver******** "ach-ich-poste-das-mal-schnell-und-vergesses-dann-wieder" Typ!..ich HASSE das!!

P.S.: Ich finde die Skripte zum Lernen sinnvoll (Lerneffekt sehr gut), da grunddinge wie "grep", "less", Ausgabeumlenkung, Prozessmanagement (immerhin die ausgabe aller Prozesse), die User-Passwortdatei (wenn auch meist verschlüsselt) etc. mit im Beispiel angeschnitten werden..also wenn das keinen Lerneffekt gibt...?!

Antwort 7 von Schwedeii

So, vielen Dank erst mal an alle, ich hab´s geschafft. Dieser Eintrag kommt von einem voll Funktionstüchtigen Compaq Contura430CX, 486/DX4 100Mhtz/32MB RAMmit XF86_SVGA. Geht also tatsächlich ganz ordentlich.

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: