Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Šta izabrati? Bash ili Python?

[es] :: Skript jezici :: Šta izabrati? Bash ili Python?

Strane: 1 2 3

[ Pregleda: 8925 | Odgovora: 59 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

anon70939

Član broj: 70939
Poruke: 2823



+6883 Profil

icon Re: Šta izabrati? Bash ili Python?17.12.2018. u 08:37 - pre 64 meseci
Citat:
nkrgovic:
Skripta kao skripta je CITKA, sto je bitnije od dobro napisana. Da pises if i error handling, meni je overkill. Iskreno, meni bi ovo bilo dovoljno.

Zamerke da treba error handling jesu na mestu, ali za ovo ti ne treba ni bash ni python, vec je mnogo bolje da koristis neki gotov alat tipa ansible. Dobar ti je uvod i u python, sasvim je dovoljan za ovakve primene, sve moze da se instalira kroz njega a laksi ti je nego cisto python.

Zamerka da nema na masini python i nije neka, a ansible ima tu prednost da ga pravis da radi remote: Napravis playbook, izvrsis ga na SVOJOJ masini, a on instalira remote masinu. Samim tim, requirements nisu problem, stavise manje su za server - jer ne treba nista, sve se izvrsava na jednom mestu, i odlicno je za rad. Ja imam nekih zamerki ali ja sam prvo poceo ansible i i dalje mi je sjajan alat za brdo stvari.

Vrlo mi je korisno što je savetovano da radim error handling. Za ovu skriptu je totalno nebitno. Ali trebaće :)
Ovu skriptu sam zamislio da mi služi za kompletnu instalaciju Jenkins servera od početka, bez da čuvam neki Image/AMI. "Jeftinije je" odnosno manje mesta zauzima. Tako da mi je error handling u ovom slučaju možda nepotreban, jer bi skripta trebalo da radi na identičnom okruženju, i ako prvi put prođe kad je napišem, onda bi trebalo svaki put. Mislim da je sasvim dovoljno ovo
Citat:
Burgos:
Dovoljno je samo da stavi
set -e
na vrh skripte ;-).

Jer ako mi je nešto krenulo loše, popraviću pa ću ispočetka pustiti skriptu (verujem da postoji bolji način :) )

Znam da tome u stvari služi Ansible/Puppet/Chef, i htedoh prvo da ispišem par skripti za instalaciju sledećih servera koji su mi potrebni čisto vežbanja radi. A onda ću i Ansible koji je koliko vidim agentless i koristi SSH. Ova druga dva nekom drugom prilikom...


Citat:
Zlatni_bg:
Naviknes se lako na firewalld, veruj mi ume da bude i preglednije nego iptables. Samo se radi o zonama koje su vezane za konekcije i tu otvaras portove. Generalno ako ces RHEL/Fedoru/CentOS da koristis, moraces da se naviknes na fwd.

...samba npr, to mi je najveci utisak ostavilo, 6h sam se mucio), i na kraju je SVE proradilo kada sam ugasio selinux. ...

Btw, kakav ti je plan za dalje? Sta bi zeleo da postignes sa bashom i pythonom? Ako te interesuje bas skripting i pravljenje konkretnih, vrlo funkcionalnih stvari uz sto manje muke, python je za to. Bash je vise za generalni rad sa linuxom nego bilo sta drugo. Vecina nas koristi bash skripte kako se ne bi na svakoj masini maltretirali satima da instaliramo isti sw :) Meni dobro dodje ako moram da povlacim nesto iz cmdl uz awk i filtriram podatke, ako izradjujem bekend servis ili nesto slicno, sto treba da radi i neki monitoring masine.

Za firewalld hoću sigurno. Video sam na više mesta da je "lakše i brže" korišćenje.
Sa bashom/pajtonom nemam neki posebni plan. Vidim po raznim konkursima da je potrebno za kojekakve pozicije, pa bar da naučim malo više od osnova. Pajton još ne kapiram kako bih mogao da iskoristim, odnosno ne vidim ni jedan "use case". Što se tiče bash-a sviđa mi se što EC2 instance uz pomoć User Data odnosno bootstrapping-a mogu da instaliram i podesim kompletan server za par minuta, i isključim bez razmišljanja "ko će sledeći put ponovo da podešava". To je valjda neki vid uštede.
Znam da tome služi Ansible (i Terraform za ceo infrastrukturni setup), ali eto htedoh prvo shell zbog ovog saveta sa druge teme

Citat:
djoka_l:
Razgovarao sam sa čovekom koji je napisao ovu knjigu:
https://www.oreilly.com/library/view/the-devops-20/9781785289194/

(inače knjiga je prilično dobra, vredi da se pročita).

Njegovo mišljenje o alatima za CI/CD - batali to sve. Mogu da ti pomognu, ali je PRVA stvar da znaš shell programiranje. ...


Citat:
nkrgovic:
... je ekvivalent onome "stavi samo chmod 777 meni tako radi".

Da sa kolegama php programerima sam se često sretao sa ovim savetom na produkciji, i svestan sam koliko je katastrofalan, zato sam radije izguglao neko rešenje i primenio (iako pojma nemam još uvek šta radi :) )
A inače sam se i ja ubio pola sata proveravajući nginx conf fajlove da skontam što mi ne radi proxy pass ili čak i obična index.html stranica. Ne znam tool kao apachectl sa kojim mogu da proverim da li su included svi conf fajlovi, pa se svodilo na to da napravim namerno grešku u sites-available conf fajlu i okinem nginx -t. Tek posle pola sata sam se setio da isključim selinux.

[Ovu poruku je menjao CoyoteKG dana 17.12.2018. u 09:50 GMT+1]
 
Odgovor na temu

nkrgovic
Nikola Krgović
Beograd

Član broj: 3534
Poruke: 2807

ICQ: 49345867
Sajt: https://www.twinstarsyste..


+655 Profil

icon Re: Šta izabrati? Bash ili Python?17.12.2018. u 08:50 - pre 64 meseci
Citat:
CoyoteKG
Znam da tome u stvari služi Ansible/Puppet/Chef, i htedoh prvo da ispišem par skripti za instalaciju sledećih servera koji su mi potrebni čisto vežbanja radi. A onda ću i Ansible koji je koliko vidim agentless i koristi SSH. Ova druga dva nekom drugom prilikom...

Sasvim dovoljno.

Glavni razlog da vozis puppet (ili chef, mada njega nisam probao) je to sto ima agent. To zvuci kao opterecenje (i jeste), ali sluzi tome da sam pool-uje config (manje bitno) i da ti garantuje da se sve vrti onako kako si napisao. To je zapravo glavna fora - alat koji ti sve vreme prati server i vraca ga u radno stanje, ako nesto pukne. (Podrazumeva se da nesto drugo prati logove i vristi kad nesto pukne).
Citat:
Za firewalld hoću sigurno. Video sam na više mesta da je "lakše i brže" korišćenje.

Glavni razlog, bar meni, je sto radi isto bez obzira na ime mrezne karte. Ti potrpas sta ti treba u koju zonu, mrezna karta je po default u svojoj (public) zoni, i ne razmisljas o tome kako se zove interfejs.

Na CentOS 6 je imalo puno alata koji naprave config tipa "iptables -i eth0...." i tako redom. Sad kad nije eth0, i kad ime nije portabilno - vec zavisi od drajvera, imas problem. Ovo je elegantno resenje

Naravno, vise zona je mnogo ozbiljnija prica i resava ti cele klase problema, na nacin koji jeste laksi kad obmotas mozak oko koncepta, ali to nije trivijalno. :) Ovo za ime interfejsa svi shvate za pet minuta. :D
Please do not feed the Trolls!

Blasphemy? How can I blaspheme? I'm a god!'
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: Šta izabrati? Bash ili Python?17.12.2018. u 08:53 - pre 64 meseci
@CoyoteKG

Prvo, u svakom slučaju je pohvalno to što skriptuješ bitne stvari, da ne bude posle da si nešto zaboravio kod procesa instalacije.

Međutim, ako je ova skripta trabala da bude primer kako ti programiraš bash skripte, onda tu ima mnogo što šta da se zameri.
To je isto kao da si u Excelu rekao RecordMacro, pa pitaš da li makro pokazuje da znaš da programiraš u VBA.
Tvoja skripta je, jednostavno, samo zapisan set komandi koje bi inače morao da otkucaš ručno.

plus_minus ti je dao dobar savet da uključiš test da li skriptu izvršava root

Ono što, po meni najviše nedostaje, je gomila testova koje si preskočio. Meni je bitno da mi skripte budu IDEMPOTENTNE. To znači da ako dva puta pustim istu skriptu, rezultati budu isti.

Recimo želiš da kreiraš fajl /etc/nesto

osnovna stvar je da proveriš da li taj fajl postoji ili ne

if [ ! -e /etc/nesto ]
then
# kreiraj fajl
else
# vec postoji
fi


Druga stvar, ne znaš caku za pravljenje fajla (zove se document here)

cat <<OznakaKrajaFajla >nekifajl
\$PATH ima vrednost:
$PATH
OznakaKrajaFajla


Meni je bilo problem da nađem gde je u tvom sktiptu kraj konfiguracionog fajla koji praviš

Treće, grozim se činjenice da sed-om menjaš passwd fajl. To meni nije košer, imaš komande usermod ili chsh da promeniš default shell korisniku, umesto da direktno menjaš passwd. Sad, passwd fajl se nije menjao značajno poslednjih 50 godina, ali ja sve jedno ne bih iz skripta menjao sadržaj fajla.
 
Odgovor na temu

Panta_
Aleksandar Pantić
Kragujevac

Član broj: 214959
Poruke: 790



+162 Profil

icon Re: Šta izabrati? Bash ili Python?17.12.2018. u 09:15 - pre 64 meseci
Citat:
Dovoljno je samo da stavi
set -e
na vrh skripte


Nije uvek, npr:
Code:
set -e
komanda1 && echo komanda2
echo komanda 3 izvrsena

komanda1: command not found
komanda 3 izvrsena


Bolje resenje je:
Code:
komanda1 || exit
komanda2 || exit

ili

komanda3 && komanda4 && komanda5
 
Odgovor na temu

anon70939

Član broj: 70939
Poruke: 2823



+6883 Profil

icon Re: Šta izabrati? Bash ili Python?17.12.2018. u 09:24 - pre 64 meseci
Citat:
nkrgovic:
Glavni razlog, bar meni, je sto radi isto bez obzira na ime mrezne karte. Ti potrpas sta ti treba u koju zonu, mrezna karta je po default u svojoj (public) zoni, i ne razmisljas o tome kako se zove interfejs.

Ovo zvuci kao windows firewall :)

Citat:
djoka_l: @CoyoteKG
plus_minus ti je dao dobar savet da uključiš test da li skriptu izvršava root

Da, nisam razmišljao o tome da recimo ako neko drugi hoće da izvši skriptu, da mora da nagađa da li root izvršava ili ne. Dodaću :)
Citat:
djoka_l:
Ono što, po meni najviše nedostaje, je gomila testova koje si preskočio. Meni je bitno da mi skripte budu IDEMPOTENTNE. To znači da ako dva puta pustim istu skriptu, rezultati budu isti.

Recimo želiš da kreiraš fajl /etc/nesto

osnovna stvar je da proveriš da li taj fajl postoji ili ne

if [ ! -e /etc/nesto ]
then
# kreiraj fajl
else
# vec postoji
fi

Ako sam dobro shvatio šta želiš da mi kažeš, ja sam primetio da mi je problem sa ovom skriptom, (baš to što sam napisao u prethodnom postu) što ako mi pukne negde, mogao bih ručno da ispravim, ali mi ništa ne znači što ne mogu opet da pokrenem skriptu jer će sve duplo da mi uradi... Nisam imao baš predstavu kako to da rešim. Ali vidim sad ako krenem sa error handling-om i poštovanjem "idempotntnosti" da će ova skripta da bude kilometarska...

Citat:
djoka_l:
Druga stvar, ne znaš caku za pravljenje fajla (zove se document here)

cat <<OznakaKrajaFajla >nekifajl
\$PATH ima vrednost:
$PATH
OznakaKrajaFajla


Meni je bilo problem da nađem gde je u tvom sktiptu kraj konfiguracionog fajla koji praviš

Ovo nisam uopšte razumeo. Šta znači "kraj konfiguracionog fajla"? Daj neki link pls.

Citat:
djoka_l:
Treće, grozim se činjenice da sed-om menjaš passwd fajl. To meni nije košer, imaš komande usermod ili chsh da promeniš default shell korisniku, umesto da direktno menjaš passwd. Sad, passwd fajl se nije menjao značajno poslednjih 50 godina, ali ja sve jedno ne bih iz skripta menjao sadržaj fajla.

Da, svestan sam ovoga :)
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12846



+4783 Profil

icon Re: Šta izabrati? Bash ili Python?17.12.2018. u 09:28 - pre 64 meseci
@CoyoteKG,
Ne radim kao admin, ali generalno, kada pravis neki proces koji se sastoji iz koraka (sto ovakve skripte jesu), za svaki korak imas dve mogucnosti: da prodje dobro ili, jelde, ne prodje dobro. U prvom slucaju nastavljas dalje. U drugom slucaju, imas cetiri opcije: nastavljas dalje, prekidas dalje izvrsavanje, rollback-ujes (vracas na prethodno stanje) do sada uradjeno, odradis neki skup koraka koji su predvidjeni za taj slucaj. Kad pravis skriptu, razmisljaj za svaki korak koji od ovih scenarija bi trebao da primenis.
Takodje, pozeljno je da skripta bude takva da mozes da je izvrsis vise puta i da sve bude ok bez obzira sto se vec izvrsila potpuno ili delimicno pre toga. Odnosi se na izvrsavanje na istoj masini. Npr. ako trebas da napravis user Pera, proveri pre toga da li vec postoji pa ako se skripta pokrene ponovo, nece biti problema, taj korak ce se preskociti. Naravno, to vazi za neke korake, ne za sve. Ako trebas postaviti korisniku Pera pass na PerinPass ne moras proveravati trenutni pass, samo ga setuj (ali bi valjalo proveriti da li postoji korisnik Pera) itd. itd.
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: Šta izabrati? Bash ili Python?17.12.2018. u 09:38 - pre 64 meseci
Ti si napisao:
Code:

echo "server {

listen 80;
server_name $DOMAIN;

location / {

# Fix the "It appears that your reverse proxy set up is broken" error.
proxy_pass http://127.0.0.1:8080;
proxy_read_timeout 90;

proxy_redirect http://127.0.0.1:8080 http://$DOMAIN;

# Required for new HTTP-based CLI
proxy_http_version 1.1;
proxy_request_buffering off;
# workaround for https://issues.jenkins-ci.org/browse/JENKINS-45651
add_header X-SSH-Endpoint jenkins.domain.tld:50022 always;
}
}

" > /etc/nginx/sites-available/$DOMAIN.conf


a treba

Code:

cat <<ENDOFCONF > /etc/nginx/sites-available/$DOMAIN.conf
server {

listen 80;
server_name $DOMAIN;

location / {

# Fix the "It appears that your reverse proxy set up is broken" error.
proxy_pass http://127.0.0.1:8080;
proxy_read_timeout 90;

proxy_redirect http://127.0.0.1:8080 http://$DOMAIN;

# Required for new HTTP-based CLI
proxy_http_version 1.1;
proxy_request_buffering off;
# workaround for https://issues.jenkins-ci.org/browse/JENKINS-45651
add_header X-SSH-Endpoint jenkins.domain.tld:50022 always;
}
}
ENDOFCONF


Ratzlika je u tome što se ovde vidi gde počinje i gde završava fajl koji kreiraš, kao i gde ga upisuješ.
U tvom primeru, tek dvadesetak linija niže vidi se da ispis ide u /etc/nginx/sites-available/$DOMAIN.conf

https://www.tldp.org/LDP/abs/html/here-docs.html
 
Odgovor na temu

nkrgovic
Nikola Krgović
Beograd

Član broj: 3534
Poruke: 2807

ICQ: 49345867
Sajt: https://www.twinstarsyste..


+655 Profil

icon Re: Šta izabrati? Bash ili Python?17.12.2018. u 10:33 - pre 64 meseci
@djoka_l :

Obicno ljudi stave EOF , bas tako, a ne ENDOFCONF - bar ja tako radim, i tako sam vidjao.... :)

@Shadowed:

200% si u pravu, samo to ce vec da potraje dok dodje dotle... i tu bi mu ansible olaksao zivot dosta.
Please do not feed the Trolls!

Blasphemy? How can I blaspheme? I'm a god!'
 
Odgovor na temu

anon70939

Član broj: 70939
Poruke: 2823



+6883 Profil

icon Re: Šta izabrati? Bash ili Python?17.12.2018. u 10:42 - pre 64 meseci
aha, to je taj EOF :D
Dok sam guglao kako da najlakse napravim fajl sa više redova, nailazio sam na echo varijantu koju sam upotrebio i EOF. Išao sam linijom manjeg otpora, odnosno ono što mi je već poznato.

iščitao sam sada o heredoc i jasno mi je.
Još samo da vidim kako recimo u nginx.conf mogu da ubacim neke direktive u html {} blok. To sam uradio sa sed -i, ali verovatno da može nekako i sa heredoc

Slobodno me gruvajte ovim informacijama i ukazujte gde gresim. Nisam ja baš mnogo uvredljiv, da jesam ne bih ni pokazivao svoje neznanje i počinjao ovu i mnoge druge teme :)

 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: Šta izabrati? Bash ili Python?17.12.2018. u 10:44 - pre 64 meseci
I ja obično stavljam tako nešto, ali ovo je više bio edukativni primer, pa sam hteo da bode oči. Neko bi pomislio da je EOF obavezan terminator, pa sam ga zato izbegao.
Osim toga, ako imaš više takvih konstrukcija u jednom skriptu, ja imam običaj da svaki komad završim drugačijim stringom, čisto da odmah vidim šta je fajl koji kreiram i gde mu je kraj.
 
Odgovor na temu

Panta_
Aleksandar Pantić
Kragujevac

Član broj: 214959
Poruke: 790



+162 Profil

icon Re: Šta izabrati? Bash ili Python?17.12.2018. u 11:53 - pre 64 meseci
Citat:
Ali vidim sad ako krenem sa error handling-om i poštovanjem "idempotntnosti" da će ova skripta da bude kilometarska

Umesto:
Code:
if [ ! -e /etc/nesto ]
then
# kreiraj fajl
else
# vec postoji
fi

Moze malo krace:
Code:
[[ ! -e /etc/nesto ]] && kreiraj fajl || vec postoji


Takodje, za bash skript koristi [[ umesto [, na primer da izbegnes razdvajanje reci:
Code:

name="Aleksandar Pantic"

[[ "Aleksandar Pantic" = $name ]] && echo True
True

[ "Aleksandar Pantic" = $name ] && echo True
bash: [: too many arguments

Ako koristis [, promenljivu stavi izmedju navodnika "$name".

Pattern matching (globs, regex):
Code:

# glob matching
filename="myfile.txt"
[[ $filename = *.txt ]] && rm $filename

# regex matching
email="[email protected]"
[[ "$email" =~ [a-z]+@[a-z.]+ ]] && echo True
True
 
Odgovor na temu

plus_minus

Član broj: 289459
Poruke: 2242
*.dynamic.isp.telekom.rs.

Sajt: https://hardcoder.xyz


+2247 Profil

icon Re: Šta izabrati? Bash ili Python?17.12.2018. u 14:06 - pre 64 meseci
Citat:
[[ ! -e /etc/nesto ]] && kreiraj fajl || vec postoji


A zašto u ovom slučaju ne -f modiifer/operator koji jeste zadužen za testiranje fajla .. ?

about:networking
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: Šta izabrati? Bash ili Python?17.12.2018. u 14:18 - pre 64 meseci
Može da se koristi -a ili -e ili -f
-f je stroži uslov, true daje samo za obične fajlove. Meni je -e prvo palo na pamet zato što me asocira na "exists". Mada, iz pokazanog primera, bilo koji od tri uslova bi bio OK.
 
Odgovor na temu

plus_minus

Član broj: 289459
Poruke: 2242
*.dynamic.isp.telekom.rs.

Sajt: https://hardcoder.xyz


+2247 Profil

icon Re: Šta izabrati? Bash ili Python?17.12.2018. u 14:32 - pre 64 meseci
Običan, neobičan u linuxu mu sve dođe fajl, pa čak i ako je direktorijum. Kako god.

Operator Description
-b file Checks if file is a block special file; if yes, then the condition becomes true.
-c file Checks if file is a character special file; if yes, then the condition becomes true.
-d file Checks if file is a directory; if yes, then the condition becomes true.
-f file Checks if file is an ordinary file as opposed to a directory or special file; if yes, then the condition becomes true.
-g file Checks if file has its set group ID (SGID) bit set; if yes, then the condition becomes true.
-k file Checks if file has its sticky bit set; if yes, then the condition becomes true.
-p file Checks if file is a named pipe; if yes, then the condition becomes true.
-t file Checks if file descriptor is open and associated with a terminal; if yes, then the condition becomes true.
-u file Checks if file has its Set User ID (SUID) bit set; if yes, then the condition becomes true.
-r file Checks if file is readable; if yes, then the condition becomes true.
-w file Checks if file is writable; if yes, then the condition becomes true.
-x file Checks if file is executable; if yes, then the condition becomes true.
-s file Checks if file has size greater than 0; if yes, then condition becomes true.
-e file Checks if file exists; is true even if file is a directory but exists.

Međutim, ako je verovati ovom gore.. sa -e čak i ako je direktorijum (a ne fajl) koji postoji (što njemu može čak i da napravi problem kasnije), slagaće ga.
about:networking
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: Šta izabrati? Bash ili Python?17.12.2018. u 14:39 - pre 64 meseci
Pa, ako postoji /etc/nesto, makar bilo i direktorijum, simbolički link, blok uređaj, bilo bi jako glupo napraviti fajl koji će se isto zvati.
Zato sam i stavio -e.

http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html
 
Odgovor na temu

plus_minus

Član broj: 289459
Poruke: 2242
*.dynamic.isp.telekom.rs.

Sajt: https://hardcoder.xyz


+2247 Profil

icon Re: Šta izabrati? Bash ili Python?17.12.2018. u 14:42 - pre 64 meseci
A ako nije u /etc nego negde u ~ ... pa onda neko drugi slučajno napravi prazan direktorijum i taj isti konta da ustvari napravio fajl bez ekstenzije ?
about:networking
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: Šta izabrati? Bash ili Python?17.12.2018. u 14:46 - pre 64 meseci
A šta ako nestane struje i...

Dao sam kao primer jednostavan test. Treba napraviti fajl. Proveriti da li fajl već postoji. Ako ne postoji, napravi ga. Ako postoji - reši situaciju, ako treba radi dalje testove.
 
Odgovor na temu

anon70939

Član broj: 70939
Poruke: 2823



+6883 Profil

icon Re: Šta izabrati? Bash ili Python?21.12.2018. u 14:23 - pre 64 meseci
Krenuo sam da popravljam skriptu da vezbam malo, i zakucao sam kod sledećeg problema.

Hoću da prilikom startovanja nginx servisa dobijem info da li je startovan ili nije. $? čak i ako ga ne startuje komandu systemctl start nginx vraća kao status 0.

Pa sam napisao mali deo, ali ne znam kako da se vratim na početak petlje. U batch koliko se sećam postoji goto komanda, ali guglam i nista slicno za bash ne postoji :/
Jedino uz pomoc nekih funkcija, ali to mi je vec next level :)


systemctl is-active --quiet nginx

if [ $? == 0 ]; then
echo ""
echo "Apache service is up and running"
echo ""
else
echo ""
echo "* [ERROR] Apache service did not started successfully"
echo "Do you want to continue with script? Chose y or n:"
read -n1 status
if [ "$status" == "n" ]; then
exit 1
elif [ "$status" == "y" ]; then
echo ""
else
echo "Wrong parameter, please type y or n:"
fi
fi



edit, mozda moze moderator da promeni naziv teme u bash scripting basics ili kako vec...


edit2

Vidim da postoji i ovaj način, što je nekako lepši na oko, ali i dalje ne shvatam kako da umesto da mi ispiše invalid da me pita ponovo da izaberem
read -n1 status


case "$status" in
n|N ) exit 1;;
y|Y ) echo "";;
* ) echo "invalid";;
esac


[Ovu poruku je menjao CoyoteKG dana 21.12.2018. u 16:12 GMT+1]
 
Odgovor na temu

Zlatni_bg
Nikola S
Beograd

Član broj: 65708
Poruke: 4420
*.dynamic.sbb.rs.



+498 Profil

icon Re: Šta izabrati? Bash ili Python?21.12.2018. u 15:34 - pre 64 meseci
Cemu --quiet parametar? Sto jednostavno ne ides "systemctl is-active httpd" i to citas kao parametar?

edit: nginx, ali ista stvar je u pitanju
THE ONLY EASY DAY WAS YESTERDAY
 
Odgovor na temu

plus_minus

Član broj: 289459
Poruke: 2242
*.dynamic.isp.telekom.rs.

Sajt: https://hardcoder.xyz


+2247 Profil

icon Re: Šta izabrati? Bash ili Python?21.12.2018. u 15:44 - pre 64 meseci
Citat:
Hoću da prilikom startovanja nginx servisa dobijem info da li je startovan ili nije

To odmah vežeš za proces i znaš kasnije ili ubijaš na silu, na zahtev.
Code (bash):

local status
local process=$(ps aux | grep "[p]hp -S ${host}:${port}" | awk '{print $2}')

if [[ $process != '' ]]
    then status=1
  else
    status=0
  fi

 


Ovo gore je (moj radni primer) izvučeno iz funkcije za php embeded-server kontrolu, a ti prilagodi grep, makni host i port, kako god.
"[p]hp -S .. " a ne "php -S .. " jeste zato jer se računa i sami grep value kao result-hit, tako da se uvek dobije jedna linija.
about:networking
 
Odgovor na temu

[es] :: Skript jezici :: Šta izabrati? Bash ili Python?

Strane: 1 2 3

[ Pregleda: 8925 | Odgovora: 59 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.