Hoi,
Ik ben bezig met een update script dat in staat is alle servers in 1 klik te updaten.
Hierbij gebruik ik het voorbeeld van het update.script van weal welke op DA servers wordt gebruikt.
Echter updaten van alle servers die in de serverlijst.txt staan werkt correct, echter ik zou graag de optie hebben als ik een taak wil uitvoeren dat mij eerst het volgende wordt gevraagd:
do you want update al servers in the serverlist? (y/n)
Indien gekozen voor yes dan gebruik maken van standaard serverlijst.txt.
indien gekozen voor no dan optie om servernummer gescheiden door comma teken opgeven, vervolgens wordt er een nieuwe tijdelijke serverlijst2.txt aangemaakt en worden alleen de gekozen servers geupdate.
het script voert uit: (voorbeeld)
pssh -h serverlijst.txt -P mv /etc/sysctl.conf /etc/sysctl.conf.bak
De bedoeling is dus dat aan de hand van de keuzemogelijkheid die hiervoor dus komt de code "serverlijst.txt" moet worden aangepast.
(moet dus een variable instelling zijn ofzo..?)
p.s, pssh werkt met de volgende indeling in het tekst bestand:
server1.nl:22 root
server2.nl:22 root
dus ik denk dat er nog een aparte template gemaakt moet worden welke de ingeven servers bij de keuze omzet, dus:
1 = server1.nl:22 root
2 = server2.nl:22 root
Ik hoop dat iemand me kan helpen, ben abusloot geen programeur, maar vindt het best leuk hier mee bezig te zijn en te leren, allweol de bash cursus op internet erg ingewikkeld is.
Evenementen voor de komende 60 Dag(en)
Resultaten 1 tot 15 van de 21
Onderwerp: hulp gevraagd bij bash script.
-
19/08/10 07:56hulp gevraagd bij bash script.
-
19/08/10 08:41Even gezocht, bedoel je zoiets?
Code:#!/bin/bash echo "We will now start installing the tools" echo "" echo "" echo "" echo "" echo "" echo "Would you like to install the default tool package n/Y?" echo "If you decided not to install the default package you will be prompted for each indvidual tool" read a if [[ $a == "Y" || $a == "y" ]]; then echo "Installing the default pentest tool package" yum install p0f yum install nbtscan else echo "You will now be prompted to install the "normal" tool list on an individual basis" echo "" echo "To speed the process, the default is YES (Just hit enter or y), otherwise hit n to NOT install the specified tool" echo "" echo "" echo "Starting the individual install process" echo "" echo "" echo "P0f v2 is a versatile passive OS fingerprinting tool. P0f can identify the system on machines that talk thru or near your box. p0f will also check masquerading and firewall presence, the distance to the remote system and its uptime, other guy's network hookup (DSL, OC3, avian carriers) and his ISP." echo "" echo "" echo "Would you like to install p0f? n/Y?" read a if [[ $a == "N" || $a == "n" ]]; then echo "p0f will not be installed." else echo "Installing p0f" echo "NBTscan is a program for scanning IP networks for NetBIOS name information. It sends a NetBIOS status query to each address in supplied range and lists received information in human readable form. " echo "" echo "" echo "Would you like to install Nbtscan n/Y" read a if [[ $a == "N" || $a == "n" ]]; then echo "Nbtscan will not be installed." else echo "Installing Nbtscan" yum install -y nbtscan fi fi fi
-
19/08/10 09:02Hoi, ehh tja nee,
De bedoeling is dat serverlijst.txt word ingevuld in de volgende lijn als men kiest voor y:
pssh -h [hier komt serverlijst.txt] -P mv /etc/sysctl.conf /etc/sysctl.conf.bak
Noot, serverlijst.txt is gewoon al aanwezig op de server, in zelfde direcory en bevat alle servers.
Echter, waneer men kiest voor de optie "no" dan dient men de servernummers handmatig in te voeren, zoiets:
# please enter the server numbers you want to update and hit return when ready:
Na hit return moet het script een .txt bestand aanmaken, hierbij moet het script weten dat 1 voor server1.nl:22 root staat en dat 2 voor server2.nl:22 root staat enzovoorts.
(deze info kan het script natuurlijk uitlezen uit een template, zie eerder bericht)
Script maakt dan bijvoorbeeld tijdelijk.txt aan met de volgende inhoud:
server1.nl:22 root
server2.nl:22 root
vervolgens wordt dit txt bestand gebruikt in de commanda die de update uitvoert:
pssh -h tijdelijk.txt -P mv /etc/sysctl.conf /etc/sysctl.conf.bak
Hoop dat ik het een beetje goed uitlegt?
- advertentie
-
19/08/10 09:37Zou er eerder zo uitmoeten zien, maar het laatste stukje .txt bestand aanmaken doormiddel van een template met de servernummers en hostnamen enzo weet ik niet, ben nogal noob in deze..
Echter een mooiere manier zou zijn dat daar waar het tekst bestand in de command staat een variable zou zijn wat wordt ingevuld na keuze yes of no, scheelt een hoop regels volgens mij.PHP Code:#!/bin/bash
echo ""
echo ""
echo "Would you like to update all server in serverlist? y/n?"
echo "Choiche NO if you want specify the servers that you want to update"
read a
if [[ $a == "Y" || $a == "y" ]]; then
echo "Updating all servers.."
pssh -h serverlijst.txt -P mv /etc/sysctl.conf /etc/sysctl.conf.bak
else
echo -e "Input the server numbers comma separated you want to update? "
read server numbers, use template.txt, and convert them into new file: tijdelijk.txt
pssh -h tijdelijk.txt -P mv /etc/sysctl.conf /etc/sysctl.conf.bak
rm tijdelijk.txt -y
echo "Sysctl.conf is updated!
-
19/08/10 11:24Zoiets:
In template.txt staat iets als "server%s.nl:22 root"Code:#!/bin/bash printf "Would you like to update all servers in serverlist? [Y,N]: " while true;do read yesno case "$yesno" in [Yy]) echo "Updating all servers..." pssh -h serverlijst.txt -P mv /etc/sysctl.conf /etc/sysctl.conf.bak echo "Done." ;; [Nn]) rm -a tijdelijk.txt TEMPLATE=`cat template.txt` echo "Enter a comma-separated list of server numbers you want to update." printf "Input: " IFS=',' while read inp;do printf "$template" "$inp" >> tijdelijk.txt done pssh -h tijdelijk.txt -P mv /etc/sysctl.conf /etc/sysctl.conf.bak rm tijdelijk.txt ;; *) printf "Please enter only Y or N: " ;; esac done
Of moet er een regel uit serverlijst.txt worden gehaald die matcht met de servernummer?
-
19/08/10 11:46Belangrijk is dat wanneer ik waarde 1 opgeef dat de server weet dat het hier gaat om server1.nl en deze in de txt kan zetten.
Ga het straks ff proberen, ziet er in ieder geval intressant uit.
Ben nu ff met andere scriptjes bezig zoals servers automatisch configureren via autologin zonder wachtwoord, en al dat soort dingen.
jemig waar ben ik aan begonnen?
Wel leuk trouwens op deze manier, run pssh.update.script en je krijgt dan allemaal updates die je kan uitvoeren op alle servers.
Tja kan ook alle commando,s handmatig via pssh doorgeven, maar zo,n leuk update scriptje is dan wel grappig en zelfs de onhandige harie zou dan nog een update op alle servers kunnen doorvoeren doordat alles door mij vooraf geprogrammeerd is.
afijn, mijn eerste bash scriptje projectje..
-
19/08/10 12:02Wees voorzichtig met commando's, voor je het weet heb je het hele netwerk kapot gemaakt
Leuke verhalen ^^ http://www.cyberciti.biz/tips/my-10-...-mistakes.html
In dat scriptje zou je nog foutenafhandeling kunnen inbouwen, voor het geval template.txt niet bestaat, er geen cijfers zijn opgegeven als server, enz.
-
19/08/10 12:05IFS=',' while read inp;do
volgens mij klopt die niet helemaal:
PHP Code:./test: line 16: syntax error near unexpected token `do'
./test: line 16: ` IFS=',' while read inp;do'
-
19/08/10 12:08
-
19/08/10 12:08Zet die IFS=',' eens op een aparte regel?
Nog een foutje op jullie site:
http://www.ccchosting.nl/serverstatus.html "Couldn't select database."
Helemaal onderin elke pagina (home, bedrijfsinformatie, ...) zie je nog de URL's in de vorm index.php?id=<id>
-
19/08/10 12:24betreffende de fouten op onze pagina, ik ben ervan op de hoogte, staat al enige tijd op me todo list, moet daar inderdaad echt eens naar gaan kijken.
afijn, commando voor alle server werkt.
maar, komt niet terug in de command line, blijft na uitvoeren hangen zeg maar, CTRL+C om af te sluiten.
Bij keuze servers bestand tijdelijk.txt wordt wel aangemaakt, maar blijft leeg, rm functie ff uit gezet om te testen.
Ook deze blijft trouwens hangen, CTRL+C om af te sluiten
EDIT:
printf "$template" "$inp" >> tijdelijk.txt
aangepast in:
printf "$TEMPLATE" "$inp" >> tijdelijk.txt
Tijdelijk.txt wordt nu wel correct aangemaakt.
-
19/08/10 12:29Ooops, ik vergat een break toe te voegen
Voeg voor de ;; in de yes en no cases 'break' to:
(met [...] bedoel ik dat daar nog code moet, niet letterlijk overnemen)Code:[Yy]) [...] echo "Done." break ;; [Nn]) [..] rm tijdelijk.txt break ;;
Edit: de lus blijft, het heeft met while read a te maken, even een betere alternatief bedenken.
-
19/08/10 12:43Thanks, dit brengt ons bij keuze Y weer terug naar de command line.
Echter de N optie werkt niet, bestand tijdelijk.txt wordt wel correct aangemaakt maar blijft hangen, ook wordt het bestand niet verwijderd en blijft ondanks de rm functie gewoon staan.
ps, rm -a wordt ook niet ondersteund..
Heb er maar ff een force (-f) optie aan gegeven
-
19/08/10 12:46Oh, dat moest 'rm -f' zijn, ik had een testbestand genaamd 'a'.
Ik heb een oplossing gevonden.
Vervang:
Door:Code:IFS=',' while read inp;do printf "$template" "$inp" >> tijdelijk.txt done
Code:IFS=',' read inp for server in $inp;do printf "$TEMPLATE" "$server" >> tijdelijk.txt done
-
19/08/10 13:01So das cool!
allowel ik geen idee heb wat $server er nu weer tussen doet, maar werkt wel.
Moest even na de pssh command wel de rm functie aanassen met de -f optie, anders werkte het niet, kreeg vage error.
waar haal je deze nuttige info zo snel vandaan?
zit te lezen op bash tutorial sites maar was al een ochtendje verder, maar bleef hangen op bovenstaand probleem.



LinkBack URL
About LinkBacks

