gear Posted November 12, 2017 Report Posted November 12, 2017 (edited) Salut. Trăgând cu ochiul peste niște proiecte pe github, am văzut fișiere .sh, mă uitam să văd ce anume fac, majoritatea erau pentru automatizare, care făceau request-uri sau alte lucruri de genul, comenzi bash, desigur. Mă gândeam dacă am nevoie de bash scripts, devreme ce știu puțin python, de ce nu aș putea obține aceleași rezultate cu acesta (py), în loc de bash? M-am uitat să văd ce zice google, primele rezultate de la stackoverflow, majoritatea sugerau că depinde de preferințe și alții explicau diferența dintre modul în care sunt executate, poate câteva detalii despre performanță și lucruri low-level care m-au făcut confuz. Voi ce părere aveți? Când folosiți bash în loc de python/ruby și vice versa? Desigur, python/ruby sunt pentru domenii mai largi, eu vreau să îndrept subiectul spre domeniul în care este folosit bash-ul mai mult, I guess sysops stuff. P.S.: Nu sunt atât de informat cu privire la lucruri de genul, mă scuzați dacă întrebările sunt cam nepotrivite. Edited November 12, 2017 by gear 1 Quote
num1r0 Posted November 12, 2017 Report Posted November 12, 2017 (edited) Daca sa privesti din partea System Operations, atunci 'bash'-ul are prioritate. Bash is like a glue between multiple tools, to get things done quickly. Sa presupunem ca ai 100 de servere si doresti sa download-ezi -> instalezi -> configurezi un tool pe ele si sa mai creezi vreun cron job pentru acel tool. Chestia data o poti face intr-o singura linie de bash (one liner). Daca lista servere e in fisier-ul 'servers.list', atunci poti rula un astfel de bash script: for server in `cat servers.list`; do ssh <username>@${server} 'wget <my_tool> && cp <my_tool> /usr/bin/<my_tool> && echo "30 * * * * root /usr/bin/<my_tool> param1 param2" >> /etc/crontab'; done Pe cind in Python, trebuie ai de raspuns la mai multe intrebari: Ce versiune de Python este instalata pe servere (2.x sau 3.x)? In cazul in care vrei sa ruleze .py scriptul pe fiecare din server; Probleme de dependente, in cazul in care vrei sa ruleze .py scriptul pe servere. Nu toate pot avea modulele necesare instalate; Daca ruleaza doar la tine pe host, atunci revii iarasi la folosirea bash-ului pe partea server, Python fiind folosit doar la cititea fisierului cu lista de servere si connectarea prin SSH la ele; Dupa parerea mea, atit Bash-ul cit si Python sunt foarte importante si trebuie stiute (pentru SysOps stuff). Ruby nu l-am inclus, pentru ca in comparatie cu Python, Ruby nu e atit de popular pe serverele Linux si nu il poti gasi instalat by default pe multe distributii. ***One liner-ul de mai sus nu l-am testat. L-am scris direct aici pe site. Interpreteaza-l mai mult ca pseudo-bash-code ))) Edited November 12, 2017 by num1r0 1 Quote
num1r0 Posted November 12, 2017 Report Posted November 12, 2017 Pentru automatizari, in cazul la un numar mare de servere, iti recomand sa vezi Ansible. E scris in Python, insa nu necesita nimic instalat pe target servers (il instalezi doar la tine local si gata). E foarte nice tool cind vrei sa faci un mass deployment or whatever. 1 Quote