• Liebe User, bitte beachtet folgendes Thema: Was im Forum passiert, bleibt im Forum! Danke!
  • Hallo Gemeinde! Das Problem leidet zurzeit unter technischen Problemen. Wir sind da dran, aber das Zeitkontingent ist begrenzt. In der Zwischenzeit dürfte den meisten aufgefallen sein, dass das Erstellen von Posts funktioniert, auch wenn das Forum erstmal eine Fehlermeldung wirft. Um unseren Löschaufwand zu minimieren, bitten wir euch darum, nicht mehrmals auf 'Post Reply' zu klicken, da das zur Mehrfachposts führt. Grußworte.

Shell-Programmierung

Jesus0815

Guest
Hiho,
ich habe folgendes Anliegen. Ich arbeite mich zur Zeit in die Shell-Programmierung ein. Dummerweiße habe ich nur rudimentäre Kentnisse darüber. Wie kann ich eine entsprechende *.sh Datei, die Anweisungen enthält ausführen? Noobfrage, ich weiß. Aber alle fangen mal klein an ;)

Grüße
 

ROOT

Technik/Software Forum, Casino Port Zion
Mitglied seit
17.11.2002
Beiträge
7.052
Reaktionen
38
Ort
MS
per chmod auf executable setzen und aufrufen
 
Mitglied seit
15.05.2003
Beiträge
11.307
Reaktionen
8
Ort
Fortuna 1895 Düsseldorf
jo alternativ

sh skript

dann ist auch egal ob skript ausführende rechte hat oder nicht, wobei das aber ein sonderfall ist. weil mit sh eine neue shell geöffnet wird und das verwirrung stiftet, wenn du in deiner aktuellen shell variablen deklariert oder verändert hast und diese auch für das skript erwartest
 

Jesus0815

Guest
ausgezeichnet, danke :D
werde im laufe der nächsten zeit noch öfter diesen thread für fragen benutzen.

grüße
 

Jesus0815

Guest
Danke für den Link, Willy!
Soweit ich das hier richtig sehe arbeite ich mit einer Bourne-Shell. Auch wenn ich noch nich so recht verstehe was genau mir das sagt ;)

Ich hätte eine Frage zum "cp" Befehl. Muss ich immer den absoluten Pfad mit angeben? (cp /blubb/fnupp/gnarr/text.txt /blubb/fnull/gnarr/test) Es gibt doch sicher eine Möglichkeit um generell mit relativen Pfaden zu arbeiten?

Original geschrieben von 2FICKENDEHUNDE
jo alternativ

sh skript

dann ist auch egal ob skript ausführende rechte hat oder nicht, wobei das aber ein sonderfall ist. weil mit sh eine neue shell geöffnet wird und das verwirrung stiftet, wenn du in deiner aktuellen shell variablen deklariert oder verändert hast und diese auch für das skript erwartest

So mach ichs grad. Ich arbeite mit einem Programm namens "Putty", logge mich auf nem Server ein und arbeite direkt auf dem.

edit: ich müsste im Laufe meiner Arbeit noch rauskriegen, wie ich eine Textdatei auf ein USB-Gerät kopieren kann. Der Ein oder Andere von euch hat vllt schon Erfahrung damit. Freue mich über Tipps.
 
Mitglied seit
15.05.2003
Beiträge
11.307
Reaktionen
8
Ort
Fortuna 1895 Düsseldorf
du wirst mit der bash arbeiten, die bourne again shell. die bourne shell selbst ist uralt und verfügt bei weitem nicht über die funktionalität der bash

der cp befehl ist doch easy. wenn du im verzeichnis stehst in dem die datei liegt sagst du einfach

cp datei1 datei2

wenn du verzeichnisse wechselst geht das entweder mit absoluten pfaden oder

cp datei1 ../datei2

um ein verzeichnis höher zu kopieren

wenn das verzeichnis unterhalb des aktuellen verzeichnisses ist zb das dir testdir:

cp datei testdir/datei2

sieh auch man cp. du kannst dir natürlich auch variablen zur hilfe nehmen.

cp datei1 $HOME/datei2

kopiert die datei in dein heimverzeichnis. oder du legst dir ne variable an mit dem verzeichnisnamen und gibst diese dann als ziel an. sei kreativ :)


€ bzgl usb stick: wenn du den befehl mount eingibst müsste er dir alle gemounteten geräte anzeigen. normaler weise, wenn automount aktiviert ist liegen diese geräte in /media oder /mnt je nach distribution. dort wird automatisch ein verzeichnis angelegt.

alternativ kannst du auch mit winscp arbeiten, das ist ganz schick um dateien per scp zwischen windows und linux geräten hin und herzukopieren. ist sone art windowscommander
 

Jesus0815

Guest
Ich führ mal kurz aus was mein Skript leisten muss:

- HW des Systems, auf dem es ausgeführt wird erkennen.
- Mit Referenz vergleich.
- Entscheiden ob das System geeignet ist oder nicht.
- Ergebnisse in eine Datei schreiben und auf ein USB-Gerät kopieren.

Dabei stellen sich mir folgende Fragen:
- Muss ich auf eine bestimmte Shell setzen, damit es kompatibel zu einer möglichst großen Anzahl an Systemen ist? (Plattformabhängigkeit?)
- Wie realisiere ich es, dass die Datei auf ein portables USB-Gerät kopiert wird? Schließlich weiß ich nicht wo der Benutzer seinen Stick drin hat.

Ich habe heute den ersten Kontakt mit Shell aufgenommen. Die rudimentären Kentnisse ergeben sich aus Spielereien mit Batchfiles.
Im Moment steh' ich halt vor nem Wald und kenne noch nicht den richtigen Eingang ;)

Das Programm mit dem ich arbeiten _muss_ nennt sich putty . Ich starte es, und logge mich auf unserem Server ein, wo die entsprechenden Skripte am Ende liegen sollen.

Ich hoffe ihr habt die Geduld mir auf die Sprünge zu helfen ;)
 
Mitglied seit
15.05.2003
Beiträge
11.307
Reaktionen
8
Ort
Fortuna 1895 Düsseldorf
da bash die standartshell auf modernen linuxsystemen ist, kannst du die verwenden. wenn du unix server dabei hast, könnte das schon eine rolle spielen, HPUX setzt zb auf die ksh als standart shell aber auch dort werden nur spezielle funktionen nicht unterstützt. ich denke mal für deine zwecke wirst du kaum auf derartige spezialfälle stossen.
 

Jesus0815

Guest
Nochmal kurz zu dem Mounten: ich erhalte die Meldung "you must specify the filesystem type" - wie? xD

edit: habs.
 
Mitglied seit
02.09.2002
Beiträge
3.281
Reaktionen
106
Original geschrieben von TE)Kain
Dabei stellen sich mir folgende Fragen:
- Muss ich auf eine bestimmte Shell setzen, damit es kompatibel zu einer möglichst großen Anzahl an Systemen ist? (Plattformabhängigkeit?)
Kleinster gemeinsamer Nenner ist die sh.
Du kannst aber (fast) ruhigen Gewissens in der Bash arbeiten, die Unterschiede sind nicht so gewaltig und Bash ist sowieso fast überall vorhanden.
 
Mitglied seit
18.01.2005
Beiträge
5.381
Reaktionen
1
du solltest dir auch die die manpages der diversen befehle und programme anschauen, welche du benutzt.

man befehl

gerade die funktionionsweisen von standardbefehlen wie cp kann man damit sehr schnell erlernen.

ich empfehle dir auch links auf einem blatt
 

Jesus0815

Guest
Hätte mal wieder ein konkretes Anliegen:

Ich muss die Hardware eines Systems auslesen, und alle relevanten Informationen über PCI, Netzwerk, USB, Hardware, HDD, CPU, RAM, etc. in einer Datei ablegen und speichern.
Ich wende mich direkt an euch, weil es ein wenig schnell gehen muss.

Demjenigen der mir am schnellsten dabei helfen kann, spendiere ich einen 5 €uro Gutschein bei K&M Elektronik
 

ROOT

Technik/Software Forum, Casino Port Zion
Mitglied seit
17.11.2002
Beiträge
7.052
Reaktionen
38
Ort
MS
CPU findeste alles unter /proc/cpuinfo, evtl. hilft dir das bei der suche für die restlichen komponenten.
 

Jesus0815

Guest
Der Tipp war schonmal sehr nützlich. Ich kann soweit PCI, USB und CPU infos in eine Datei schreiben. Fehlen noch Netzwerk, RAM und HDD. Diese habe ich dann unter "proc" leider nicht gefunden.
 
Mitglied seit
15.05.2003
Beiträge
11.307
Reaktionen
8
Ort
Fortuna 1895 Düsseldorf
free -m
df -h
ifconfig


dmesg is auch ganz interessant

wasn das fürn BS?

uname -a


hab sowas ähnliches hier rumfliegen, kannste die ausgabe ja umleiten:

Code:
#!/bin/bash

case $1 in
        info|i) echo -e "Datum:      \t\t`date`"
                echo -e "Rechner:    \t\t`hostname`"
                echo -e "IP Adresse:\t\t`cat /etc/hosts| grep $HOSTNAME | awk '{print $1}'`"
        ;;
        fs|f)   df -h | grep -e '^/dev*'
        ;;
        mem|m)  free -m|grep Mem| awk '{print "Memory:", $2, "KB"}'
        ;;
        *)      echo "Usage: $0 [info|fs|mem]"
        ;;
esac
 

Jesus0815

Guest
Original geschrieben von 2FICKENDEHUNDE
wasn das fürn BS?

Linux.
Der Code ist nice. Gibt es eine einfachere Möglichkeit die CPU auszulesen als über "/proc/cpuinfo" ? Einen direkten Befehl z.B.?
 

Jesus0815

Guest
Hast du evtl. auch ne Idee wie ich die Festplatte finden kann? Ich werde wenn das Skript fertig ist, von der CD booten. Wie kann ich da feststellen welche HDD installiert ist?
 
Mitglied seit
15.05.2003
Beiträge
11.307
Reaktionen
8
Ort
Fortuna 1895 Düsseldorf
cat /etc/fstab

die /dev/irgendwas sind die platten bzw partitionen und cd disketten und usb devices, in der zweiten spalte steht wo sie eingehangen sind

vielleicht solltest du dich mit den namenskonventionen bei hdds unter linux vertraut machen

sda/hda ist platte 1
sdb/hdb ist platte 2

sda1/hda1 ist 1. primäre partion der 1.platte
geht bis s/hda3 für 3 primäre partitionen

ab /dev/sda5-/hda5 erweiterete partitionen
 

Jesus0815

Guest
Wie ist das wenn eine Platte als SCSI oder im Raid betrieben wird? Macht das irgendeinen Unterschied?

Grüße
 
Oben