Ik heb op dit moment een bash script draaien op een aantal Red Hat machines.
Dit bash script welke als de server gestart wordt afhankelijk van het opgegeven tijdstip verder gaat met het verder opstarten van de programma's. In het script wordt dus gekeken wat is de hostnaam en op basis van de hostnaam heb ik een starttijd opgegeven.
Nu wil ik dit script ook inzetten op andere machines, alleen zijn dit AIX machines.
Verder wordt dit script op de AIX machines aangeroepen via een crontab omdat deze machines geen herstart zullen krijgen in tegenstelling tot de Red Hat machines.
Nu hebben deze AIX machines ook bash alleen ik ben er achter gekomen dat het script dan niet wilt werken.
Zo deed ik een array in bash op onderstaande manier:
Maar doordat declare -A niet werkt omgezet naar:
Nu komt alleen het probleem waar ik geen oplossing voor kan vinden, in mijn bash script maak ik gebruik van date, voor het ophalen van de tijd en dag. En deze vervolgens te gebruiken of het de juiste dag is en hoeveel seconden/minuten/uren en nog gewacht moet worden voordat de server verder mag met opstarten.
Hiervoor gebruik ik de "date -d" methode, alleen op een AIX systeem werkt deze optie niet.
Ik heb al gevonden dat ik de onderstaande:
Kan vervangen voor:
Maar op het vervangen van (-d @$tijdnu ) en (-d ${starttijd}) uit het bash script kan ik geen oplossing bedenken.
Iemand enig idee hoe ik dit kan oplossen?
Dit bash script welke als de server gestart wordt afhankelijk van het opgegeven tijdstip verder gaat met het verder opstarten van de programma's. In het script wordt dus gekeken wat is de hostnaam en op basis van de hostnaam heb ik een starttijd opgegeven.
Nu wil ik dit script ook inzetten op andere machines, alleen zijn dit AIX machines.
Verder wordt dit script op de AIX machines aangeroepen via een crontab omdat deze machines geen herstart zullen krijgen in tegenstelling tot de Red Hat machines.
Nu hebben deze AIX machines ook bash alleen ik ben er achter gekomen dat het script dan niet wilt werken.
Zo deed ik een array in bash op onderstaande manier:
code:
1
2
3
| declare -A servernaam servernaam["localhost1"]="00:00" servernaam["localhost2"]="00:15" |
Maar doordat declare -A niet werkt omgezet naar:
code:
1
| typeset -A servernaam=(["localhost"]="00:00" ["localhost2"]="00:15") |
Nu komt alleen het probleem waar ik geen oplossing voor kan vinden, in mijn bash script maak ik gebruik van date, voor het ophalen van de tijd en dag. En deze vervolgens te gebruiken of het de juiste dag is en hoeveel seconden/minuten/uren en nog gewacht moet worden voordat de server verder mag met opstarten.
Hiervoor gebruik ik de "date -d" methode, alleen op een AIX systeem werkt deze optie niet.
code:
1
2
3
4
5
6
7
| tijdnu=$(date +"%s") dag=$(date +"%a" -d @$tijdnu ) tijdtegaan=$(date +"%s" -d ${starttijd} ) if [ $tijdtegaan -lt $tijdnu ]; then tijdtegaan=$(( tijdtegaan + 86400 )) fi sleep_time=$(( tijdtegaan - tijdnu )) |
Ik heb al gevonden dat ik de onderstaande:
code:
1
2
| date +"%s" date +"%a" |
Kan vervangen voor:
code:
1
2
| (printf '%(%s)T\n') (printf '%(%a)T\n') |
Maar op het vervangen van (-d @$tijdnu ) en (-d ${starttijd}) uit het bash script kan ik geen oplossing bedenken.
Iemand enig idee hoe ik dit kan oplossen?
[Voor 4% gewijzigd door FabiandJ op 09-03-2021 10:29]