neul-ingo
Anmeldungsdatum: 16. Mai 2014
Beiträge: 34
|
Hallo! Worin liegt der Unterschied zwischen dem Ausführen eines sh Skriptes und der manuellen Eingabe von Befehlen mit z.B. ssh? Ich möchte immer mal wieder kleinere Skripte schreiben und einfach die Befehle verwenden, welche ich auch über ssh eingeben würde. Dies funktioniert meistens aber überhaupt nicht. Es gibt entweder Fehler ala "file not found" oder es passiert einfach gar nichts. Mir ist klar, dass ich irgendetwas übersehe oder schlichtweg nicht das nötige Hintergrundwissen besitze. Trotzdem würde ich gerne wissen warum das so ist, bzw. wo ich mich weiter einlesen könnte. Danke schonmal ☺
|
wxpte
Anmeldungsdatum: 20. Januar 2007
Beiträge: 1175
Wohnort: Schäl Sick
|
Schwer zu sagen, warum das nicht funktioniert, da du hier nur das Resultat deiner Bemühungen (Fehlermeldung oder gar keine Reaktion) beschreibst, aber nicht, welche Schritte du unternommen hast, um deine Skripte zum Laufen zu bringen. Abgesehen davon würde ich als Einstieg zum Skripting diese Anleitung empfehlen. SSH ist übrigens nur ein Protokoll zum Verbinden mit entfernten Maschinen und hat mit der Shell als solcher nicht so viel zu tun.
|
sebix
Moderator, Webteam
Anmeldungsdatum: 14. April 2009
Beiträge: 5334
|
Es ist moeglich, dass deine Skripte in einer anderen Shell ausgefuehrt wurden, die sich von deiner Default Shell unterscheidet. Das kann die shell-spezifische Syntax, Sprachen Features und Befehle betreffen. Warum files nicht gefunden werden, darueber laesst sich ohne weitere Infos nur spekulieren.
|
neul-ingo
(Themenstarter)
Anmeldungsdatum: 16. Mai 2014
Beiträge: 34
|
sebix schrieb: Es ist moeglich, dass deine Skripte in einer anderen Shell ausgefuehrt wurden, die sich von deiner Default Shell unterscheidet. Das kann die shell-spezifische Syntax, Sprachen Features und Befehle betreffen.
Gut, ich denke das wird es sein. Wie kann ich das ändern? Ich greife im Moment über putty auf meinen ubuntu server zu. Ich nehme jetzt mal als Beispiel den Befehl ifconfig.
Schreibe ich diesen ganz normal über die ssh Kommandozeile, bekomme ich das zu erwartende Ergebnis.
Mit diesem Skript bekomme ich dann einen Fehler:
| :~$ bash test.sh
test.sh: line 2: $'ifconfig\r': command not found
|
|
sebix
Moderator, Webteam
Anmeldungsdatum: 14. April 2009
Beiträge: 5334
|
Das ist etwas ganz anderes. Koennest du einmal die Ausgabe von
posten, im und ohne Skript.
|
neul-ingo
(Themenstarter)
Anmeldungsdatum: 16. Mai 2014
Beiträge: 34
|
| :~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
:~$ echo $SHELL
/bin/bash
|
|
sebix
Moderator, Webteam
Anmeldungsdatum: 14. April 2009
Beiträge: 5334
|
Und als Skript ausgefuehrt?
|
neul-ingo
(Themenstarter)
Anmeldungsdatum: 16. Mai 2014
Beiträge: 34
|
Sry, hier ist es:
| :~$ bash test.sh
/bin/bash
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
|
|
ExcitedSpoon
Anmeldungsdatum: 17. Juli 2010
Beiträge: 226
Wohnort: /home/berlin
|
neul-ingo schrieb: | :~$ bash test.sh
test.sh: line 2: $'ifconfig\r': command not found
|
Die Fehlermeldung sagt eigentlich schon alles. Die Datei enthält Windows-line-endings, welche hier Probleme machen. Entfernen kannst du diese zum Beispiel so:
| sed -i 's/^M//g' test.sh # in-place Ersetzung, oder...
sed 's/^M//g' test.sh > test-ohne-win-eol.sh # ... in neue Datei
|
Das ^M ist hierbei ein Steuerzeichen, welches du mittels drücken von CTRL-V gefolgt von CTRL-M erhältst (nur meinen Befehl kopieren reicht also nicht).
|
sebix
Moderator, Webteam
Anmeldungsdatum: 14. April 2009
Beiträge: 5334
|
Ah, danke ExcitedSpoon. Oder eines der vielen Programme fuer die Konvertierung verwenden, am einfachsten ist hier wohl fromdos (Paket tofrodos).
|
neul-ingo
(Themenstarter)
Anmeldungsdatum: 16. Mai 2014
Beiträge: 34
|
Ja, sehr vielen Dank! So funktioniert es jetzt wunderbar. Und ich dachte schon ich mache sonstwas falsch.. ☺
Arbeite mit Notepad++ und habe jetzt bei der EOL Conversion das UNIX Format eingestellt. Super! Danke!
|
ExcitedSpoon
Anmeldungsdatum: 17. Juli 2010
Beiträge: 226
Wohnort: /home/berlin
|
sebix schrieb: Ah, danke ExcitedSpoon. Oder eines der vielen Programme fuer die Konvertierung verwenden, am einfachsten ist hier wohl fromdos (Paket tofrodos).
Ja, das ist vermutlich intuitiver für Leute, die nicht so gern mit sed rumhantieren 😉. Grüße
|