Linux 15.070 Themen, 107.540 Beiträge

Kommandos automatisieren - wie geht's?

Michael-2712 / 21 Antworten / Baumansicht Nickles

Hi Leute!

Ich wollte mir ein Icon auf meinen Desktop legen, um ins Internet zu kommen. Der Befehl für die bash lautet:
"/usr/sbin/pppd call 1und1"
Ich dachte es reicht, wenn ich diesen Befehl in eine Datei mit der Endung .sh schreibe - hat aber leider nicht funktioniert. Wie geht\'s richtig?

Danke für alle Antworten!

bei Antwort benachrichtigen
Plazebo Michael-2712 „Kommandos automatisieren - wie geht's?“
Optionen

Unter Linux kann jede Datei, unabhängig von der Endung, ausführbar sein. Es muss also kein ".sh" am Ende deines Miniskriptes stehen, nur muss die Bash irgendwie wissen dass die Datei ausführbar ist. Dieses Attribut kann man mit "chmod u+x datei" vergeben.

bei Antwort benachrichtigen
Michael-2712 Plazebo „Unter Linux kann jede Datei, unabhängig von der Endung, ausführbar sein. Es...“
Optionen

Das Recht zum Ausführen hat geholfen - irgendwie auch logisch. Aber es funktioniert trotzdem nur mit der Endung .sh . Wenn ich die Endung weglasse, wird die Datei in KWrite geöffnet.

bei Antwort benachrichtigen
Plazebo Michael-2712 „Das Recht zum Ausführen hat geholfen - irgendwie auch logisch. Aber es...“
Optionen

Ich bin nicht so das Bash-Frickler. ".sh" ist wohl ein Signal, dass es sich um ein Bashskript handel. Man könnte das wohl auch erzwingen in dem man "bash datei" ausführt.

Naja, egal. Problem gelöst.

bei Antwort benachrichtigen
the_mic Plazebo „Ich bin nicht so das Bash-Frickler. .sh ist wohl ein Signal, dass es sich um ein...“
Optionen

das liegt dann vermutlich an kde, welches halt windows-like nach endung statt nach dateiheader einteilt.

cat /dev/brain > /dev/null
bei Antwort benachrichtigen
REPI Michael-2712 „Kommandos automatisieren - wie geht's?“
Optionen

ein bash Script sollte immer mit dem Pfad zur eigentlchen Shell beginnen.
z.B. (falls es sich um die Bash handelt)

#!/bin/sh

Dann wird diese auch als Script erkannt, unabhängig von einer eventuellen Extention !

Es empfiehlt sich immer, etwas Linux im Hause zu haben.
bei Antwort benachrichtigen
KarstenW Michael-2712 „Kommandos automatisieren - wie geht's?“
Optionen

In einem Shellsricpt soll immer in der ersten Zeile ein Pseudokommentar stehen , wie repi es schon gesagt hat. Dabei wird dann immer automatisch die entsprechende Shell gestartet, in welcher das Shellscript ausgeführt wird. Das stammt noch vom alten Unix von 1969 von Bell Lab. Ein Shellscript wird immer in einer neuen Shell ausgeführt, in einer sogenannten Subshell.
#!/bin/sh oder #!/bin/bash startet eine Bash (wenn das Shellscript für eine Bash geschrieben worden ist)

#!/bin/ksh startet eine Kornshell (von Solaris), wenn das Shellscript für eine Kornshell geschrieben worden ist

#!/bin/csh startet eine C-Shell , wenn das Shellscript für einen C-Shell oder eine erweiterte C-Shell geschrieben worden ist.

Die BASH (Born Again Shell) ist am beliebtesten unter Linux.

Debian GNU/Linux https://www.debian.org/index.de.html
bei Antwort benachrichtigen
heriL Michael-2712 „Kommandos automatisieren - wie geht's?“
Optionen

Hallo,
vielleicht liege ich als Newbie ja total falsch, aber unter KDE kann ich mit dem Kontextmenu eine "Verknüpfung zu einem Programm" erstellen. Programmname, inkl. Pfad und Parameter eingeben und ich kann auf den Batch / Skript ganz verzichten.
Gruß
heriL

bei Antwort benachrichtigen
Michael-2712 heriL „Hallo, vielleicht liege ich als Newbie ja total falsch, aber unter KDE kann ich...“
Optionen

Habe ich auch probiert. - Hat aber nicht geklappt, aber vielleicht habe ich mich auch nur zu blöd angestellt...
Aber irgendwie sollte es doch auch möglich sein...!?!

bei Antwort benachrichtigen
REPI heriL „Hallo, vielleicht liege ich als Newbie ja total falsch, aber unter KDE kann ich...“
Optionen

Ja, aber manchmal will man auch unter KDE mehr als nur ein Programm mit Übergabeparametern anstarten und dann nimmt man eben einen Script !

ggf. mal den Script im Terminal laufen lassen , um zu sehen, was passiert !

Es empfiehlt sich immer, etwas Linux im Hause zu haben.
bei Antwort benachrichtigen
KarstenW heriL „Hallo, vielleicht liege ich als Newbie ja total falsch, aber unter KDE kann ich...“
Optionen

Das stimmt natürlich. Die Shellprogrammierung stammt aus Zeiten als es noch Terminals gab, die an Unixgroßrechner angeschlossen waren und sie dafür gedacht z.B. Konfigurationsarbeiten zu automatisieren. Sie wird aber auch benutzt um die Konfigurations des Rechners beim Hochfahren (Runlevels) zu automatisieren. Früher mußte man mehr mit den klassischen Unixbefehlen arbeiten. Das X-Windowssystem ist erst 1984 am MIT in Amerika entwickelt worden. Seitdem gibt es erst Workstation mit grafischer Benutzeroberfläche (KDE, fvwm2-Windowmanager ...).
Man kann mit der Shellprogrammierung diverse Arbeiten automatisieren,anstatt gleich ein Programm in C oder C++ zu
programmieren.

Bloß mal nebenbei.

Debian GNU/Linux https://www.debian.org/index.de.html
bei Antwort benachrichtigen
REPI heriL „Hallo, vielleicht liege ich als Newbie ja total falsch, aber unter KDE kann ich...“
Optionen

Nur wenn man sein Linux System wirklich ernsthaft selbst administrieren will und am persönlichen Geschmack die Feinheiten ausrichten will, kommt man um Shellprogrammierung bzw. gewisser Grundkenntnisse dazu nicht drumhereum.

Ausserdem macht es Spaß, ist interessant und wenn ich nur auf einer grafischen Oberfläche klicken will, ist das sehr unbefriedigend.

Denn gerade an Linux ist es das Schöne, daß ich grafisch und auch an einer vollwertigen Kommando-Shell arbeiten kann und dies auch noch gewschind hin und her zwitschen kann !


Es empfiehlt sich immer, etwas Linux im Hause zu haben.
bei Antwort benachrichtigen
heriL Michael-2712 „Kommandos automatisieren - wie geht's?“
Optionen

Eieiei, natürlich sind Skripte sinnvoll, und ich verwende selber kleine Skripts, z.B. um meine Daten zu sichern. Ich meinte nur, daß, einen einzigen Befehl direkt aus dem Icon abzurufen, doch direkter ist, als den Umweg über einen Skript zu gehen - natürlich nur, wenn's funktioniert.

bei Antwort benachrichtigen
REPI heriL „Eieiei, natürlich sind Skripte sinnvoll, und ich verwende selber kleine...“
Optionen

Ein Script wird wie ein einzelner Befehl über ein Icon aufgerufen, da ein Script eigentlich auch eine Kommandoerweiterung der Shell ist !

Es empfiehlt sich immer, etwas Linux im Hause zu haben.
bei Antwort benachrichtigen
rmf heriL „Eieiei, natürlich sind Skripte sinnvoll, und ich verwende selber kleine...“
Optionen

So kleine Shell-Skripte sind was feines für faule Leute. Mit dem Mencoder kann man z.B. recht gut seinen Rechner als Videorecorder missbrauchen. Entweder gibt man den Rattenschwanz an Kommandos jedesmal händisch ein, oder man baut sich halt ein Billigst-Skript wie folgendes (Zeilenumbrüche aus Nächstenliebe eingefügt):


#!/bin/bash
#ARD
xterm -e mencoder tv:// -tv driver=v4l:device=/dev/video1:width=640:height=480:fps=25:freq=203,25 -ovc lavc -lavcopts vcodec=mpeg4:vqscale=4 -oac mp3lame -lameopts abr:br=96 -o /home/ralph/video.avi

Das lässt sich prima mit einem Klick ausführen; dabei poppt ein xterm auf mit der Ausgabe von mencoder; xterm schließen, schon ist die Aufzeichnung fertig.

In Verbindung mit kdialog lassen sich im KDE-Stil auch noch Abfragen im Popup-Fensterchen oder Auswahldialoge starten. Billig-Beispiel (auch hier sind aus Platzgründen die Zeilen umgebrochen):

#!/bin/bash
cd /home;
kdialog --title "Sicherung" --yesno "Mit der Sicherung beginnen?" && xterm -e rsync -avz --progress --delete -e ssh ralph root@schwarz:/Web/Sicherung/leo

bei Antwort benachrichtigen
REPI rmf „So kleine Shell-Skripte sind was feines für faule Leute. Mit dem Mencoder kann...“
Optionen

Mei ganzes Seti-Handling unter Linux habe ich auf einer Sammlung von Scripten aufgebaut !

Sieh dazu z.B. hier

Es empfiehlt sich immer, etwas Linux im Hause zu haben.
bei Antwort benachrichtigen
Michael-2712 Nachtrag zu: „Kommandos automatisieren - wie geht's?“
Optionen

Ich bin überrascht, wie viele Leute mir geantwortet haben und ich bin für alle Antworten sehr dankbar. Nun aber noch eine Frage:
Ich möchte, dass ein Shell-Skript beim Herunterfahren und beim Neustart des Systems ausgeführt wird. Dazu habe ich das entsprechende Skript in /etc/rc.d/init.d/ kopiert und in rc6.d und rc0.d Links auf dieses Skript angelegt. Leider funktioniert das Ganze noch nicht. Ich habe die Links jeweils "K02captive_beenden" genannt.
Wisst ihr, warum das Skript nicht ausgeführt wird?

Danke!

bei Antwort benachrichtigen
Klaus_T Michael-2712 „Ich bin überrascht, wie viele Leute mir geantwortet haben und ich bin für alle...“
Optionen

Was klappt denn da nicht? Wird es nicht beendet? Zeigt der Link auch auf das Script? Ist das Script ausfuehrbar. Zeige mal das Ding.

Klaus

bei Antwort benachrichtigen
Michael-2712 Klaus_T „Was klappt denn da nicht? Wird es nicht beendet? Zeigt der Link auch auf das...“
Optionen

#!/bin/bash
umount /mnt/daten
umount /mnt/standard
---------------------
Diese Laufwerke müssen bei mir "von Hand" ausgehangen werden, weil sie mit den captive NTFS Treibern gemountet sind. Diese verschlucken ganz gern mal Daten, wenn zu früh beendet wird. Wenn ich die Befehle da oben per Kommandozeile ausführe, klappt alles.

bei Antwort benachrichtigen
Klaus_T Michael-2712 „ !/bin/bash umount /mnt/daten umount /mnt/standard --------------------- Diese...“
Optionen

Normalerweise haengt Linux alle Sachen, die beim runterfahren noch gemountet sind, automatisch aus. Vielleicht sind die dann schon ausgehangen. Es kann aber auch sein, dass irgendwie die Zeit nicht reicht.
Schreibe doch mal folgendes vor den beiden mount Befehlen und dann noch einmal danach rein:
echo -e " \\a"
sleep 1
echo -e " \\a"
Wenn du dann 2 Beebtoene hoerst und danach noch einmal 2, dann wird es ausgefuehrt.

Klaus

bei Antwort benachrichtigen
Michael-2712 Klaus_T „Normalerweise haengt Linux alle Sachen, die beim runterfahren noch gemountet...“
Optionen

Hi!
Ich habe jetzt die Zeilen, wie von dir beschrieben, eingefügt. Er piept aber nicht. Nichtmal, wenn ich das Skript direkt ausführe.

bei Antwort benachrichtigen
Klaus_T Michael-2712 „Er piept nicht!“
Optionen

Da ist aber irgendetwas oberfaul. Mach am besten mal einen neuen Thread auf und schreibe genau, was du gemacht hast und welche Fehlermeldung genau kommt. Ich habe hier langsam den ueberblick verloren.

Klaus

bei Antwort benachrichtigen