Shellscript umschreiben

fanste

Erfahrenes Mitglied
Hi,

Ich habe hier eine kleine Bitte an euch.

Ich habe hier folgenden Code
Bash:
# # # # # # # # # Start des telnet-daemons
/usr/sbin/telnetd -l /sbin/ar7login


while !(ping -c 1 www.tecchannel.de); do
sleep 5
done

# # # # # # # # # Installation FTP-Server
cd /var/tmp
wget http://www.tecchannel.de/download/432803/bftpd.conf
wget http://www.tecchannel.de/download/432803/bftpd
chmod +x bftpd
chmod 777 bftpd.conf

# Hier den Usernamen und den Passwort-Hash für den FTP-Server eintragen
echo "grubi:WkSRDWz8JRxLc:0:0:root:/:null" >> /var/tmp/passwd
/var/tmp/bftpd -d -c /var/tmp/bftpd.conf
(Die ganzen URL Tags müssen weg. Das Board mach die einfach dazu.)

und wollte wissen, ob man ihn so umschreiben kann, dass es

1. Alles, was unterhalb von "# # # # # # # # # Installation FTP-Server" steht, in eine Datei Namens "startFTP" im Verzeichnis /var/tmp speichert

2. Es in der while-Schleife prüft, ob der Router eine Verbindung ins Internet hat. Wenn ja, soll es das oben geschriebene Script aufrufen. Wenn nicht, soll es bei 2 oder 3 Fehlversuchen nichts mehr machen. (Evt kommt noch etwas unter diesen Teil, d.h. das Script wird evt noch weiter geführt.)

Ist das möglich?
Ich hoffe das könnte einer für mich machen. Ich habe bisher noch kaum (ok, keine) Erfahrung mit der Shell unter Linux.

Danke schonmal für eure Bemühung.
 
Zuletzt bearbeitet:
Ich nehme einfach an, dass all dies in die Datei soll:
Code:
#
cd /var/tmp
#
wget http://www.tecchannel.de/download/432803/bftpd.conf
#
wget http://www.tecchannel.de/download/432803/bftpd
#
chmod +x bftpd
#
chmod 777 bftpd.conf
#
 
#
# Hier den Usernamen und den Passwort-Hash für den FTP-Server eintragen
#
echo "grubi:WkSRDWz8JRxLc:0:0:root:/:null" >> /var/tmp/passwd
#
/var/tmp/bftpd -d -c /var/tmp/bftpd.conf
Das kannst Du recht einfach bewerkstelligen und zwar indem Du folgendes davor und dahinter setzt:
Davor:
Code:
cat >> /var/tmp/startFTP << "EOF"
Dahinter:
Code:
EOF

Mal ein kleines Beispiel:
Code:
cat > /tmp/test.bla << "EOF"
Bla
BlaBla
BlaBlaBla
BlaBla
Bla
EOF
Der Inhalt von test.bla sieht nun so aus:
cat test.bla hat gesagt.:
Bla
BlaBla
BlaBlaBla
BlaBla
Bla
 
Danke. Das es jetzt so einfach ist, hätte ich nicht gedacht.

Und wie funktioniert das noch mit der while-Schleife? Also, dass das Script nach 3 Fehlversuhen bei der Verbindungsherstellung einfach das Aufrufen des erstellten Scriptes überspringt und danach alles was noch kommt ausführt?
 
Hi.

Warum willst du denn das überhaupt in eine externe Datei schreiben? Nur um es dann vom Skript aus aufzurufen? Was wenn die Datei nicht erstellt bzw. nicht überschrieben werden kann?

Warum packst du das nicht einfach in eine Funktion innerhalb des Skripts die du dann aufrufst?

Z.B.
Bash:
function start_bftpd() {
  cd /var/tmp
  wget http://www.tecchannel.de/download/432803/bftpd.conf
  ...
}

declare -i c=0

while [[ $((c++)) -lt 3 ]] && !(ping -c 1 www.tecchannel.de); do
  sleep 5
done;

if [[ $c -le 3 ]]; then
  start_bftpd
fi

...

Die Benutzung eines temporären Verzeichnisses (mittels mktemp -d erstellt) würde sich evtl. anbieten.

Gruß
 
Zuletzt bearbeitet:
Das Script wird immer erst Temporär erzeugt. Wenn keine Verbindung besteht, soll ich das Script nacher von Hand ausführen können. Darum soll es in eine Datei geschrieben werden.

Die Datei, in der das ganze geschieht, wird immer beim booten aufgerufen.
 
Ich finde das ist noch kein Grund ein Skript zu schreiben welches ein anderes Skript erstellt welches man dann aufrufen kann. Dann kann man ja gleich das erste Skript nutzen denn das enthält ja zwangsweise das zweite (könnte man ja mit Parametern machen bzw. man schaut ob es interaktiv aufgerufen wurde oder nicht.

Deine Fragen sollten dann ja eigentlich beantwortet sein und du kannst das Thema auf erledigt setzen, oder?!

Gruß
 
Zurück