Reengineering Shellskripte

A

alibapir

Grünschnabel
Hallo Community,

ich habe ein Problem wo ich leider keine Lösung finde.

Es gibt eine Liste von Shell-skripten die in unterschiedlichen Ordnern auf dem Server liegen. Ich möchte nun herausfinden, welche weiteren Skripte durch die oben erwähnten aufgerufen werden und wo diese liegen. Mit den Ergebnissen möchte ich die Liste der schon erfassten ergänzen und diese wiederum auch durchsuchen.
Gibt es dafür Programme oder Ideen wie man dieser Kaskade Herr werden kann?

Viele Grüße und vielen Dank vorab für Eure Unterstützung!
 
Moin,

mittels "bash -x skript" kannst du dir anzeigen lassen welche Befehle von einem Skript ausgeführt werden
Code:
$ bash -x script1
+ echo script1
script1
+ ./script2
script2
+ ./script3
script3
Jede Zeile die mit einem "+" beginnt ist ein Befehl in script1.

Ich weiß allerdings nicht ob du die von dir erwähnten Skripte jederzeit ausführen darfst.

Eine alternative ist, das Skript im Editor öffnen und durch den Code wühlen.

mfg
HeadCrash
 
Hi HeadCrash,

eine Variante, in dem ich die Skripte nicht laufen lassen muss sie quasi "offline" durchsuchen kann gibt es nicht, oder?

Viele Grüße
Alibapir
 
Wie erwähnt: Skripte im Editor aufmachen und anschauen.
 
Vielen Dank für die Antworten! Dann beginne ich mal mit den ersten 400 :)
 
Moin,

du kannst mit regulären Ausdrücken arbeiten.
Ein Befehl in bash beginnt ja immer am Zeilenanfang, nach beliebig vielen white-spaces, in Subshells "()", backticks "``", nach einer Pipe "|" etc., etc.
das kann man mit einem entsprechenden regulären Ausdruck überprüfen.
Danach kann man noch built-ins wie "if", "then", "else", "while", etc. herausfiltern.

Beste Grüße

Schard

PS: Du kannst auch alle Shellskripte auf dem Rechner suchen, und dir anzeigen lassen, welches in welchem aufgerufen wird.
Alle bash Skripte auf dem System kannst du so finden:
Code:
 find / -type f -exec grep -El "#\![ ]*/bin/bash" {} \;
 
@Schard, ist die Frage ob du mit der RegEx wirklich alles erwischt.

Wenn sich die ganzen Skripte unterhalb eines bestimmten Verzeichnisses befinden könnte man mit find nach ausführbaren Dateien suchen.
Code:
$ find ./wirrwarr/ -type f -perm -500
./wirrwarr/script2
./wirrwarr/script1
./wirrwarr/script3
Hier gibt es aber auch keine Garantie dafür das man alle erwischt, da sie mit "/bin/bash skritptname" auf gerufen werden können und dafür müssen sie nicht ausführbar sein.
Gibt es Konventionen nach denen die Skripte benannt sind? Dann könnte man nach entsprechenden Dateien suchen und die RegEx zum durchsuchen der Skripte entsprechend gestalten.
 

Ähnliche Themen

Keine grafische Oberfläche (Debian Installation)

[gelöst] - for file in ... nur für bestimmte Endungen?

Welches Linux/Unix für ehemaligen OSX Nutzer?

Shell Skript zum automatischen Aufräumen von doppelten Ordnern

Heimserver Konfiguration für Ubuntu Server?!

Zurück
Oben