Archiv verlassen und diese Seite im Standarddesign anzeigen : nützliche Shell-Scripts
fabian ackle
14.03.2002, 22:42
So ein schönes Forum und niemand schreibt etwas hinein, dabei wollte ich doch so gerne ein wenig ShellScripting lernen ;)
Stellt doch mal ein paar nützliche scripte hier hinein, würde mich interessieren, wofür ihr ShellScripte noch verwendet und was sich damit alles bewälltigen lässt :D
greetz
dubious
scripte hab ich en´ masse ....
nur .. ob die irgendwer jemals wieder verwenden kann ... lass ich mal so im raum stehen ...
das problem am ´einfach mal ein paar scripts posten´, ist .. diese shell scripts enstehen normalerweise dadurch das man quick & dirty ne lösung braucht für ein problem, aber keinen bock hat extra ein perl/c prog zu schreiben ..
und da blickt dann meistens nur der durch, der das ding verbrochen hat (also mir gings so als ich von meinem vorgänger die ganzen sourcen angeschaut hab und fast kotzen musste ..)
fabian ackle
17.03.2002, 18:32
ist mir ja schon klar, dass es nicht einfach ist ein script zu posten, darum eine konkrete frage:
wie kriege ich die IP, und zwar nur die IP, meines rechners. müsste eine kombination von cut & ifconfig sein. hab aber ein wenig probleme mit diesem cut-befehl. währe daher nett wenn mir das jemand erklären könnte :]
thx
dubious
ifconfig | grep "inet addr" | awk -F ":" ´{print $2}´| awk ´{print $1}´
meinst du sowas ??
ich hab z.b. mehrer interfaces...
da kommt dann das hier raus:
node0:~ # ifconfig
eth0 Link encap:Ethernet HWaddr 00:48:54:5A:A5:D6
inet addr:192.168.0.25 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::48:545a:a5d6/10 Scope:Link
inet6 addr: fe80::248:54ff:fe5a:a5d6/10 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1773044 errors:0 dropped:0 overruns:0 frame:0
TX packets:2185527 errors:0 dropped:0 overruns:3 carrier:0
collisions:0 txqueuelen:100
Interrupt:10 Base address:0xe800
eth1 Link encap:Ethernet HWaddr 00:48:54:5A:A0:5B
inet addr:10.1.1.25 Bcast:10.1.1.255 Mask:255.255.255.0
inet6 addr: fe80::48:545a:a05b/10 Scope:Link
inet6 addr: fe80::248:54ff:fe5a:a05b/10 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:725183 errors:0 dropped:0 overruns:0 frame:0
TX packets:487933 errors:0 dropped:0 overruns:0 carrier:0
collisions:531 txqueuelen:100
Interrupt:12 Base address:0xec00
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:3924 Metric:1
RX packets:1389 errors:0 dropped:0 overruns:0 frame:0
TX packets:1389 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
ppp0 Link encap:Point-to-Point Protocol
inet addr:217.233.105.203 P-t-P:217.5.98.170 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1492 Metric:1
RX packets:657927 errors:0 dropped:0 overruns:0 frame:0
TX packets:405382 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:10
und mit den pipes und awk:
node0:~ # ifconfig | grep "inet addr" | awk -F ":" ´{print $2}´| awk ´{print $1}´
192.168.0.25
10.1.1.25
127.0.0.1
217.233.105.203
ach ja.. ich hab keinen plan warum das board das alles escaped hat .. schmeiss einfach alle backslashes weg ;-)
fabian ackle
17.03.2002, 20:18
hmm... auch eine sehr schöne lösung! thx :)
hab schon mal irgendwo eine lösung mit CUT gesehen, war aber ein stück komplizierter, daher gefällt mir deine besser. Das schöne am Programmieren ist, dass man auf unzählige arten ans ziel kommen kann :D
falls noch jemand andere nützliche scripts hat -> posten :D
ach ja, für eine CUT-Anleitung wäre ich auch noch dankbar ;)
greetz
dubious
Hi leute,
Mein erster post !
Also mein erstes skript war ein einfacher test ob mein webserver online ist !
#Online Test 0.1a
#Shell Skript
( ping -c1 t-online.de && echo Online ) || echo Offline
#(c) 2002 Malcolm
#e-mail: malcolm@exneca.de
Ich weiß nichts großes aber da ich damals immer problemme mit meinem web anbieter hate !
Jan Krüger
04.11.2002, 15:37
fabian: schonmal `man cut` probiert? ;)
ich habs so, wie es da stand, kapiert.
beispiel: wir wollen aus einem string, der aus mehreren wörtern, getrennt von doppelpunkten, besteht, das dritte wort rausziehen.
echo "abc:dfggf:asaslkj:wiwiwi:aaa" | cut -d":" -f3
-d: delimiter (trennzeichen)
-f: nummer des felds, das zurückgeliefert werden soll (können auch mehrere sein)
-c: nur die angegebenen zeichen ausgeben (z.b. -c0-9,. für ziffern und "."), kann nicht mit -f verwendet werden
-s: zeilen, in denen keine trennzeichen vorkommen, werden ignoriert
der rest scheint mir nicht so wichtig zu sein.
der code für das finden deiner IP-adressen müsste also so aussehen:
ifconfig | grep "inet addr" | cut -d":" -f2 | cut -d" " -f1
fabian ackle
04.11.2002, 16:11
danke jast, hat sich aber unterdessen schon erledigt (ist immerhin schon 8 monate her, war am anfang meiner Shell-Script-Karriere :D)
btw: was würdet iht von einem SubForum halten wo man seine Scripte Puplizieren kann?
mfg
fabian
Jan Krüger
04.11.2002, 19:44
upps... hab mir die datumsangaben gar nicht angesehen... :rolleyes:
ich werde für so ein forum keine verwendung haben, denn was ich dann mal an shell-scripts schreibe, ist auf meine systemumgebung ausgelegt und wird hier sonst niemandem weiterhelfen. :)
Coding-Junior
20.02.2008, 18:28
Hi,
bei mir kommt folgende Fehlermeldung:
$ ifconfig | grep "inet addr" | awk -F ":" ´{print $2}´| awk ´{print $1}´
-sh: Syntax error: "|" unexpected
Woran könnte das liegen?
Gruß Coding-Junior.
ifconfig | grep "inet addr" | awk -F ":" ´{print $2}´| awk ´{print $1}´
meinst du sowas ??
ich hab z.b. mehrer interfaces...
da kommt dann das hier raus:
node0:~ # ifconfig
eth0 Link encap:Ethernet HWaddr 00:48:54:5A:A5:D6
inet addr:192.168.0.25 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::48:545a:a5d6/10 Scope:Link
inet6 addr: fe80::248:54ff:fe5a:a5d6/10 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1773044 errors:0 dropped:0 overruns:0 frame:0
TX packets:2185527 errors:0 dropped:0 overruns:3 carrier:0
collisions:0 txqueuelen:100
Interrupt:10 Base address:0xe800
eth1 Link encap:Ethernet HWaddr 00:48:54:5A:A0:5B
inet addr:10.1.1.25 Bcast:10.1.1.255 Mask:255.255.255.0
inet6 addr: fe80::48:545a:a05b/10 Scope:Link
inet6 addr: fe80::248:54ff:fe5a:a05b/10 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:725183 errors:0 dropped:0 overruns:0 frame:0
TX packets:487933 errors:0 dropped:0 overruns:0 carrier:0
collisions:531 txqueuelen:100
Interrupt:12 Base address:0xec00
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:3924 Metric:1
RX packets:1389 errors:0 dropped:0 overruns:0 frame:0
TX packets:1389 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
ppp0 Link encap:Point-to-Point Protocol
inet addr:217.233.105.203 P-t-P:217.5.98.170 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1492 Metric:1
RX packets:657927 errors:0 dropped:0 overruns:0 frame:0
TX packets:405382 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:10
und mit den pipes und awk:
node0:~ # ifconfig | grep "inet addr" | awk -F ":" ´{print $2}´| awk ´{print $1}´
192.168.0.25
10.1.1.25
127.0.0.1
217.233.105.203
ach ja.. ich hab keinen plan warum das board das alles escaped hat .. schmeiss einfach alle backslashes weg ;-)
Jan Krüger
22.02.2008, 11:43
Du musst a) die HTML-Entities durch die eigentlichen Zeichen ersetzen (" => ", ´ => ´), aber b) statt einem Acute-Akzent (´) einen Grave-Accent (`, so genannter Backtick) benutzen.
Dass da HTML-Entities auftauchen, dürften an Fehlern einer früheren Version dieser Boardsoftware liegen.
Coding-Junior
22.02.2008, 12:38
Hi,
das funktioniert: :)
ifconfig | grep "inet addr" | cut -d":" -f2 | cut -d" " -f1
Könnte das mal jemand bitte Schritt für Schritt an der Original-Ausgabe erläuten wie das Script das wegflitert? Ich habe das versucht nachzuvollziehen bin aber nicht auf die selbe Lösung gekommen und meine haben auch nicht funktioniert.
Das hier geht mit folgender Fehlermeldung bei mir nicht:
ifconfig | grep "inet addr" | awk -F ":" ´{print $2}´| awk ´{print $1}´
awk: cmd. line:1: Unexpected token
awk: cmd. line:1: Unexpected token
Das hier geht mit folgender Fehlermeldung bei mir nicht:
ifconfig | grep "inet addr" | awk -F ":" `{print $2}`| awk `{print $1}`
Warum kann ich nicht sagen. Fehlt meiner Shell etwas, eventeull der print-Befehl?
Danke Junior.
Deine Shell interpretiert "`" du musst die AWK Befehle in Single Quotes setzen.
'{print $1}'
vBulletin® v3.8.6, Copyright ©2000-2012, Jelsoft Enterprises Ltd.