ich hab ein Skript namens "remote_aufgabe.sh", das momentan wie folgt aussieht:
Code: Alles auswählen
if [[ ! "$(whoami)" = "johndoe" || $# -eq 0 || $# -gt 1 ]];then
cat <<EOF
Das Skript muss als User "johndoe" ausgeführt werden und als Parameter muss
ein Hostname oder eine IP-Adresse angegeben werden. Mehrere Parameter sind nicht zulässig, es muss also immer ganz genau EIN Parameter eingegeben werden!
EOF
exit 1
fi
lcldir=/workdir
host2process=$1
# Überprüfen, ob der gewünschte Remotehost per ping erreichbar ist
ping -c 1 -W 2 $host2process > /dev/null
if [ $? -ne 0 ]; then
echo "Keine Verbindung zum angegebenen Host $host2process. Bitte überprüfen. ABBRUCH!"
echo
exit 2
fi
meine_funktion() {
irgendwelche Befehle
meiner Funktion
bla bla
}
# jetzt benötige ich diese Funktion, da ich sie auf den remote host anwenden muss
meine_funktion $host2process
remotehostname=$(ssh root@$host2process hostname)
if [[ irgendwas ]]; then
irgendwelche Kommandos
fi
Code: Alles auswählen
su -c './remote_aufgabe.sh host1' johndoe
su -c './remote_aufgabe.sh host2' johndoe
su -c './remote_aufgabe.sh host3' johndoe
...usw...
Ich will mein Skript nun mit einer Funktion erweitern, damit ich es aufrufen kann, und statt einem einzelnen Host diese host.list abgearbeitet wird (nacheinenader, sequentiell eben). Also habe ich nach dem ersten Abschnitt zu Beginn des Skriptes ...# Kommentarzeile
# Bla bla
host1
amelie
host3
obelix
asterix
# usw....
host40
Code: Alles auswählen
if [[ ! "$(whoami)" = "johndoe" || $# -eq 0 || $# -gt 1 ]];then
cat <<EOF
Das Skript muss als User "johndoe" ausgeführt werden und als Parameter muss
ein Hostname oder eine IP-Adresse angegeben werden. Mehrere Parameter sind nicht zulässig, es muss also immer ganz genau EIN Parameter eingegeben werden!
EOF
exit 1
fi
<an dieser Stelle>
Code: Alles auswählen
# Wenn als Startparameter -hostlist angegeben wird, arbeitet das Skript alle dort
# enthaltenen Maschinen nacheinander ab.
if [ "$1" = "-hostlist" ];then
if [ ! -f $lcldir/host.list ];then
echo
echo Es wurde als Parameter -hostlist eingegeben, jedoch ist die benötigte Datei
echo $lcldir/host.list nicht vorhanden. Programm wird beendet, ABBRUCH !
echo
exit 3
fi
while read -r host2process; do
[[ ! ${host2process// } || $host2process = \#* ]] && continue;
<hiermuss jetzt der ganze Skriptablauf irgendwie aufgerufen werden> $host2process;
<hier folgt jetzt der restliche Teil des Skriptes von ganz oben>
Code: Alles auswählen
[...]
done < "$lcldir/host.list"
if
Kann mir da jemand raushelfen und mir erklären, wie man so etwas richtigerweise und korrekt skriptet? Bin für jede Hilfestellung sehr dankbar.