Shell Script Do Zero

Embed Size (px)

Citation preview

  • 5/26/2018 Shell Script Do Zero

    1/55

    Shell Script do zero

  • 5/26/2018 Shell Script Do Zero

    2/55

    ndice

    Captulo 1 - Bsico do BsicoCaptulo 2 - VariveisCaptulo 3 - Operadores Lgicos de comparaoCaptulo 4 - Codio !" e escrevedo o primeiro scriptCaptulo # - Operadores Lgicos de Coe$oCaptulo % - &sado os CoectoresCaptulo ' - "a(edo loops com o )*or+ e script remotoCaptulo , - .ile e &tilCaptulo / - Opera0es matemticas e iiciali(ao de scriptsCaptulo 1 - Comado caseCaptulo 11 - "uo e armetroCaptulo 12 - Comados sed cut pipelie tr e grepCaptulo 13 - 5ltimos comadosCaptulo 14 - !detao

    Captulo 1# - 6cript com 7aelas

  • 5/26/2018 Shell Script Do Zero

    3/55

    Captulo 1 Bsico do Bsico

    Apresentao

    8ste material 9 dedicado para a:ueles :ue o sa;em ada de lgica de programao e 6.ell6cript os captulos a seguir voc< ser capa( de criar scripts ;sicos a mediaos e ter todas as

    codi0es de se apro*udar o tema so(i.o procuro sempre dar muitos e$emplos para :ue voco se preocupe se os coceitos apresetados at9 o captulo 3 *icarem vagos a partir docaptulo 4 tra;al.aremos a prtica e tudo *icar mais *cil= "aa os e$erccios ates de ver arespostas por:ue a teoria a programao sem prtica dei$a muito a dese7ar= 8sclarecedo :ue sei pouco mas 7utado este pouco com criatividade e persist

  • 5/26/2018 Shell Script Do Zero

    4/55

    $"eplo destes coandos no script

    K claro :ue o script a seguir o tem muito setido 9 s para visuali(armos a aplicao doscomados apresetados ateriormete=

    Coandos ais conhecidos

    6o os comados :ue estamos acostumados a usar o termial e podemos us-los tam;9m

    o script se voc< o os co.ece v aprededo de acordo com a ecessidade pes:uise a iterete cosulte a ta;ela resumida a;ai$o sempre :ue preciso=

    !iret%rios

    Coando Sinta"e !escrio

    rm -r* rm -r* diretrio eleta ar:uivos@pastas e tudo :ue estiver detro ?cuidadoA

    pMd pMd Nostra em :ual diretrio estamos

    c.mod c.mod ''' ar:uivoHouHpasta Nuda as permiss0es ''' permisso total

    c.oM c.oM usergrupo ar:HouHdiret= Nuda o proprietrio de ar:uivos e pastas

    cd cd diretrio 8tra em diretrios

    &surios

    Coando Sinta"e !escrio

    useradd useradd lui( -g aluos ?o grupoA Pdicioa um usurio

    userdel userdel usurio eleta usurio e seus ar:uivos

    groupdel groupdel grupo eleta um grupo

    groups groups omeHusuario Nostra os grupos do usurio

    addgroup addgroup usuario grupo ou addgroup omedogrupo Cria um grupo ou adicioa um usurio ao grupo

    sudo sudo comado 8$ecuta comados como rootM.oami M.oami !deti*ica com :ual usurio voc< esta logado

    O ec.o va(io salta uma li.a a tela para :ue o *i:ue tudo 7uto

    Nostrado a *rase Bem vido a tela

    O comado apt-get roda em 2G plao e o script cotiua e$ecutado

    Cometrios

    &sado o iterpretador decomados ;as.

  • 5/26/2018 Shell Script Do Zero

    5/55

    'ede

    Coando Sinta"e !escrio

    i*co*ig i*co*ig Nostra as iter*aces de rede

    .ostame .ostame Nostra ou muda o ome de seu computador a rede

    pig ig ipHdese7ado ispara pacotes para outro pc para testar coe$0es etc

    Sistea

    Coando Sinta"e !escrio

    Qillall Rillall omeHdoHprograma Nata um processo

    M.atis .atis ome do programa escreve o :ue *a( o comado

    di** di** ar:uivo1 ar:uivo2 Compara 2 ar:uivos

    ps ps -el* Nostra os programas :ue esto rodado

    cat cat ar:uivoHte$to Nostra o coteSdo de um ar:uivo de te$to

    grep Comado T grep palavra "iltra a sada do comado mostra a li.a da palavra pedida

    l l -s ar:uivoHorigial atal.o Cria atal.o

    cp cp ar:uivo destio Copia um ar:uivo ou diretrio ?-D para diretriosA

    apt-get apt-get omeHprograma !stala aplicativos

    *id "id ome rocura por ar:uivos e diretrios

    Copactao

    (ar)*z +A elhor e tepo ,s copactao-

    Coando .uno !escrio

    tar -(c* ovo=tar=g( pastaHouHar:uivo Compactar ((ip ccompact **iletar -($* pastaHouHar:uivo escompactar $e$trair ((ip **ile

    (ar +Apenas /unta-

    Coando .uno !escrio

    tar -c* ar:uivoHovo=tar ar:uivo Ppeas 7utar os ar:uivos -c comprimir -* *ile

    tar -$* ar:uivo=tar 8$trair -$ e$trair -* *ile

    'ar

    Coando .uno !escrio

    rar a ovo=rar ar:uivo Compacta a Pdicioaurar ar:uivo=rar escompacta

    (ar)"z +Copacta ais-

    Coando .uno !escrio

    tar -Uc* ar:uivoHovo=tar=$( ar:uivo Compactar -U $( -c cria -* *iles

    tar -U$* ar:uivo=tar=$( escompactar -$ e$trai - preservapermiss0es

  • 5/26/2018 Shell Script Do Zero

    6/55

    Captulo 0 ari,eis

    6o muitos os valores :ue lidamos a programao e eles variam muito por isto 9 :uee$istem as variveis elas podem assumir :ual:uer valor um9ricos ou al*aum9ricos a :ual:uermometo=

    ortato varivel 9 um ome com um valor detro dela :ue *ica arma(eado a memria

    para ser usado :uado preciso= ?seu ome uca comea com SmeroA=

    $"epli2icando#

    osso criar um script :ue ecessite col.er o ome de aluos mas a cada rodada o ome serdi*erete eto eu posso criar a varivel PL&>O :ue arma(ear este valor detro dela=

    $"eplos de coo colher os dados para a ,ari,el#>o se preocupe em decorar estes comados procure eteder o raciocio=oc3 eso d o ,alor dentro do script

    P:ui ao iv9s de c.amar de varivel podemos c.am-lade costate 7 :ue o valor Uoatao muda a o ser:ue voc< crie outra li.a modi*icado este valor

    'ece4endo o ,alor di*itado pelo usurio

    Ode )read+ 9 o comado para :ue o usuriodigite o valor da varivel em :uesto

    Pe*ando o ,alor de u arqui,o5te"to

    O valor da varivel ser o resultado do comado detro

    dos parO+Uoata+

    PL&>O?cat @etc@matriculaA

    ara co*udir meos 9 recomedado escrever as variveis com letras maiSsculase em precisa *alar :ue o se pode escreve-las com aceto=

    Com o sim;olo )+ ates da varivel prevalece o valor :ue esta detro dela=$"eplo#etro da varivel )"PW8D+ te.o este valor X )mQdir programa+

    >o script digito uma li.a assim "PW8DO :ue vai acotecer YYYO s.ell vai dar o comado )mQdir programa+ criado o diretrio pedidoor causa do sim;olo ele cosidera o coteSdo

    Valor

    6uricoX >Smeros arma(eados ?para *a(ermos cotasAAl2anuricosX odem ser Smeros te$tos ou os dois 7utoso importate sa;er 9 :ue sempre ser cosiderado como um te$to

    O Liu$ 9 case sesitive ou se7ase escreveu determiada varivel

    em maiSscula voc< o podemudar para miuscula o meio do6cript por:ue ele reco.ece como

    outra palavra=

    ec.o )igite o ome do aluo+read PL&>O

  • 5/26/2018 Shell Script Do Zero

    7/55

    Ps varia0es so muitas pes:uise e teste a medida :ue precisar=

    P:ui !>Z1 ser o resultado de doisigs depois seu valor 9 gravado oPr:uivo @.ome@log 7utamete coma data= ?9 )-M 3+ para sair 2 pigsA

    K ormal usarmos variveis pegado valores :ueevolvem outras variveis a:ui eu uso o comado

    ps e a varivel DOZ para ac.armos a li.a dealgum programa e o resultado destecomado ser o valor de DOP>O=

    >este caso o valor da varivel o importapois sua utilidade 9 de apeas parar a tela e$i;idapara :ue o usurio possa ler a mesagem e d< eterpara prosseguir=

    >este caso o usurio digita o ome do programa e a varivel PCO[8 usaeste resultado e$e se o usurio digitar mpla\er a varivel PCO[8 ter oValor )protecmpla\er+=

  • 5/26/2018 Shell Script Do Zero

    8/55

    Captulo 7 5 Operadores l%*icos de coparao

    >s vamos ver estes operadores detro de um determiado cote$to pois 9 o :ueecessitamos por e:uato :ual:uer *uo :ue se7a um pouco di*erete do descrito a:uia;ordaremos depois do captulo '=

    Os operadores lgicos de comparao mostram ao s.ell uma codio a ser testada oresultado do teste pode ser ,erdadeiroou 2also este resultado 9 usado por vrios comados ?vamoseteder estes comados a medida do possvelA um deles e um dos mais importates 9 o !" :ueveremos em ;reve=

    O :ue podemos eteder como ,erdadeiro e2also8

    O coteSdo destes comparadores podem ser nuricos ou Al2anuricos ?vai *a(ercomparao :ue ecessita cosiderar o Smero matematicamete eto 9 um9rico o resto 9al*aum9ricoA por e$emplo se eu vou lidar com Smeros de cadastros de *uciorios voucosider-los Pl*aum9ricos por:ue al9m de o ter cota eu s vou ler como se *osse um te$to 7o um9rico pode ser :uatidade comparao ?1 meor :ue 2A clculos etc= >uca poderemosco*udir estas duas categorias=

    Coparadores 6uricos

    -lt >Smero 9 meor :ue ?Less [.aA

    -gt >Smero 9 maior :ue ?Zreater [.aA

    -le >Smero 9 meor ou igual ?Less 8:ualA

    -ge >Smero 9 maior ou igual ?Zreater 8:ualA

    -e: >Smero 9 igual ?8]ualA

    -e >Smero 9 di*erete ?>ot 8:ualA

    $"epli2icando#

    6upodo :ue a varivel Atem o valor de 79e Btem o valor de 09 eto poderamos ter asseguites situa0es

    $le no e"ecuta o coando: porque a condio no satis2eita: pois: A no enor que B)se ^ P 5lt B _` eto *aa ?se P 9 meor :ue B eto *aa o comadoAcomado

    P *rase a;ai$o por mais o;via :ue se7a ela 9 verdadeira4 9 meor :ue #

    8sta tam;9m 9 verdadeira

    O ome camila 9 di*erete do ome Uulia

    or *im esta 9 *alsa# 9 di*erete de #

    Codio"alsa

    8stes operadores so*udametais em

    scripts@programao=

  • 5/26/2018 Shell Script Do Zero

    9/55

    6este caso: ele e"ecutaria o coando: porque a condio satis2eita: / que A di2erente de Bse ^ P 5neB _` eto *aacomado

    Coparadores Al2anuricos

    [e$to 9 igual [e$to 9 di*erete

    - [e$to o ulo

    -( [e$to 9 ulo

    6upo.amos agora :ue Acot9m a palavra )noite+ e Bcot9m a palavra )dia+ eto

    Aqui ele no e"ecuta o coando: porque A no i*ual a B)se ^ P ;B _` eto *aacomado

    Aqui ele e"ecuta o coando: / que A di2erente de B)se ^ P

  • 5/26/2018 Shell Script Do Zero

    10/55

    Captulo = Condio >. e escre,endo o prieiro script

    Condio >.

    >o igleste captulo aprederemos comoescrev

  • 5/26/2018 Shell Script Do Zero

    11/55

    Sea varivel 86[PO 9 di*erete de )desligado+ eto e$ecute o comado Qillall=== seno===

    Pgora :ue sa;emos escrever a codio i* vou mostrar como se escreve os operadoreslgicos de comparao )-+ e )-(+ prometidos ateriormete eles so escritos ates da varivel aser comparada como ula ou o ula=

    6upodo :ue voc< ecessite rodar um comado apeas se a varivel coseguiu col.er osdados do comado )ps+ por e$emplo ?para veri*icar se determiado programa esta rodadoA o.esite em usar o -( e o -=

    Ptes de *a(ermos o osso primeiro script vamos )7utar as peas+ vimos os comados;sicos o coceito de variveis os operadores de comparao e por Sltimo o comado i*= 6e

    7utarmos isto mais as pe:ueas dicas a seguir seremos capa(es de *a(er o primeiro script=

    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@6osso prieiro script

    alor da ,ari,el a se*uir

    86[PO+operado+

    8ste pe:ueo i* compara a varivel 86[PO com a palavradesligado sea codio *or verdadeiras ele mata o pla\er vlcsenoele )dorme+ 1 segudos e sai ?e$itA=

    6e a varivel OD[P estiver va(ia ele mostra o

    te$to a tela Varivel sem valor

    8la rece;edo algum valor ele mostraP varivel o esta va(ia

    oderamos dar o )pulo do gato+ e colocar este scriptcom apeas um i* X sea varivel o tem valor mostrea tela )varivel sem valor+ senomostre )P varivelo esta va(ia+

  • 5/26/2018 Shell Script Do Zero

    12/55

    Vamos *a(er osso primeiro script@e$erccio temos ele proto o captulo de resoluo dee$erccios mas 9 claro :ue voc< vai resolv

  • 5/26/2018 Shell Script Do Zero

    13/55

    Captulo Operadores %*icos de Cone"o

    Com estes operadores podemos coectar duas ou mais codi0es criadas com os operadoresde comparao criado assim mais de um eveto a ser testado pelo s.ell a;ai$o aprederemosso;re os coectores $e O&=

    aos ,isualizar coo 2ica os conectores para 2icar ais claro#

    J >o e$emplo acima temos dois coectores mas 9 s e$emplo 7 :ue o correto ali seria apeas umcoector=

    Operador l%*ico +$-

    P:ui a con/uno9 verdadeira se todas as codi0es de comparao *orem verdadeiras

    eto mostro a ta;ela para etedermos a lgica=6 Condio 1 Conector Condio 0 'esultado do teste $"plicao

    1G V e V Verdadeiro or:ue as duas codi0es so verdadeiras

    2G " e V "also K *also por:ue apeas uma codio atede

    3G V e " "also K *also por:ue apeas uma codio atede

    4G " e " "also >e.uma codio atede

    $"epli2icando#

    Vamos cosiderar esta lgica como se *osse um porteiro e ele li;era o acesso de acordo coma situao descrita a;ai$o

    6 etra a *esta casais :ue o .omem se c.ama C9sar $a mul.er Uuliaa

    1G C9sar e Uuliaa 8trada permitida ?as duas codi0es so verdadeirasA

    2G aulo e Uuliaa O ome Uuliaa ;ate mas o ome aulo o atede ;arrados

    3G C9sar e Nica O ome C9sar est a lista mas o ome Nica o ;arrados

    4G USlio e Carolia >e.um dos dois omes esto a lista ;arrados

    8teda con/unosedo a uio das codi0escomparativas *eitas pelos coectores=rasgado o ver;o K tudo :ue esta detro doscolc.etes do i* ^ _

  • 5/26/2018 Shell Script Do Zero

    14/55

    Nuitas ve(es vamos es;arrar com a ecessidade de usar os coectores vamos supor :ue eupreciso de um i* rodado apeas em duas situa0es

    8u *i( um script :ue dimiua a velocidade dos meus doMloads para 1Q :uado a mi.airm coectava o ote;ooQ mas :uado o pc da mi.a me estava ligado simultaeamete comoeu poderia dimiuir a velocidade para #Q compesado duas m:uias ligadasY 8to eu criei um

    i* para esta situao=

    8sta 9 a parte :ue ideti*ica as duas m:uias ligadas

    i* ^ )>O[8+ )ligado+ $)CNP8+ )ligado+ _`t.e Comado ?Moders.aper et. 4 :ue 9 igual a X #Q A*i

    8u usei vrios comados para c.egar o valor ligado ates de ser comparado e para outrasvelocidades mas a:ui vamos os preder apeas ao setido do comado=

    Operador l%*ico +O&-

    P:ui a co7uo 9 verdadeira se uma ou outra codio *or verdadeira ?sedo as duasverdadeiras tam;9m 9 vlidoA

    6 Condio 1 Conector Condio 0 'esultado do teste $"plicao

    1G V ou V Verdadeiro or:ue pelo meos uma codio 9 verdadeira

    2G " ou V Verdadeiro [emos uma codio verdadeira e 9 su*iciete

    3G V ou " Verdadeiro [emos uma codio verdadeira e 9 su*iciete

    4G " ou " "also >e.uma codio verdadeira para validarmos

    $"epli2icando#

    Vamos usar o mesmo e$emplo da coe$o aterior s :ue desta ve( eu preciso :ue apeasuma codio se7a verdadeira para :ue ele e$ecute o comado trocaremos o epelo ou=

    6 etra a *esta casais :ue o .omem se c.ama C9sar O&a mul.er Uuliaa

    1G C9sar ou Uuliaa 8trada permitida as duas codi0es so verdadeiras

    2G aulo ou Uuliaa 8trada permitida pelo meos uma codio verdadeira ?7uliaaA

    3G C9sar ou Nica 8trada permitida a codio ?C9sarA valida a etrada4G USlio ou Carolia >e.um dos dois omes esto a lista ;arrados

    egado o e$emplo aterior do script :ue dimiui a velocidade da iteret podemos pesara seguite situao 8 se eu :uisesse dimiuir a velocidade da iteret para 1Qidepedetemete da :uatidade de pcs ligados ou se7a se o pc da mi.a irm O&o pc da mi.ame estiverem ligados ou se os dois simultaeamete dimiui para 1Q e proto=

    i* ^ )>O[8+ )ligado+ O&)CNP8+ )ligado+ _`t.e Comado ?Moders.aper et. , :ue 9 igual a X 1QA

    *i

    ara o coector $ ;asta lem;rarse 9 tudo verdadeiro eto e$ecuta=

  • 5/26/2018 Shell Script Do Zero

    15/55

    >a liguagem do s.ell o operador )e+ 9 represetado como )5a+e o operador )ou+ 9 represetado por )5o+ ?o co*udir com -(eroA

    Como mostrado a;ai$o

    1 codio 2 codio

    Coectado as duas codi0es

    o e$emplo acima podemos eteder 6e a varivel O8D 9 di*erete de desligado $aVarivel P!>8L 9 igual a *ucioado eto *aa o comado=

  • 5/26/2018 Shell Script Do Zero

    16/55

    Captulo D &sando os Conectores

    Vamos a;ordar mais algus e$emplos dos coectores e partiremos para a prtica a seguir=

    Podeos usar quantos conectores quiseros#

    $"eplo de u script copleto: que usa o recurso dos conectores#

    >ote :ue os comados i* o esto usado aspas as variveis e em os valores 7ustametepor se tratarem de valores um9ricos@matemticos=

    >este script *ui o;rigado a usar o coector -a para de*iir o .orrio da tarde 7 :ue )estar detarde+ sigi*ica ser mais :ue 13 .oras $meos :ue 1, .oras=

    &sado o coector

    6e pelo meos uma*or verdadeira ele

    e$ecuta o comado

    6 todas as codi0essedo verdadeiras 9 :ueele e$ecuta

  • 5/26/2018 Shell Script Do Zero

    17/55

    $"erccio 0 5 $scre,endo scripts ais ela4orados

    P *uo do script 9 i*ormar a classe do carro co*orme pedido pelo usurio

    "errari e Lam;org.ii Celta alio e &o

    Classe P Classe B Classe C

    $tapas do script#

    - !*ormar os carros dispoveis ao usurio- ede ao usurio :ue digite :ual carro dese7a ver a classe- Nostra a classe do carro e sai

    Conse*uindo 2azer o script acia tereos atin*ido os nossos o4/eti,os at aqui: a*ora2areos u script que e"i*e u pouco ais de raciocnio: se ,oc3 no conse*uir 2azer no sepreocupe: pode continuar co os pr%"ios captulos que o raciocnio l%*ico ais apurado

    ,e co o tepo)$"erccio 7 %*ica dos PC1 e PC0

    >s temos 2 pcs vamos pergutar ao usurio :uais pcs esto ligados ?um de cada ve(Adepois do usurio ter digitado )ligado+ ou )desligado+ para cada pc o programa mostra a soma atela ?o 9 soma *eita o s.ell leia o :uadro a;ai$o para sa;erA=

    Co*orme os valores a;ai$o vamos mostrar a tela o valor total re*erete a soma doscomputadores ligados= 6upodo :ue o C1 e C2 este7am ligados eto o valor mostrado 9 1# se*or apeas o C2 o valor por sua ve( ser 1 e assim sucessivamete o desa*io ser estruturar os i*spara :ue o apaream i*orma0es demais ou de meos=

    C1 #

    C2 1

    [emos os icremetos a;ai$o :ue poderemos adicioar ao e$erccio opcioalmeteo*erecedo a voc< mais algumas atividades para aguar o raciocio em 6.ell 6cript *aa um;acQup do script *eito acima e adicioe as *u0es pedidas a;ai$o=

    >ncreentos#6e digitar ligado ou desligado errado avisar o usurio e sair6e o usurio digitar desligado para os dois retorar o valor de (ero

    'esoluo

    Ateno o usaremos a *uo matemtica de somar por:ue emapredemos ela aida voc< vai *a(er a soma de ca;ea e colocar oresultado com o comado ec.o= O o;7etivo a:ui 9 raciociar e *a(edopela matemtica iria *icar muito simples e o 9 osso o;7etivo estee$erccio

    P:ui o vale opo umericao usurio deve digitar o ome

    do carro para alcaarmoso o;7etivo do e$ercicio

  • 5/26/2018 Shell Script Do Zero

    18/55

    Captulo E .azendo loops co o F2orG e script reoto

    U parou para pesar como podemos dei$ar um script idepedete :ue *i:ue ali deprotido vigiado as situa0es e e$ecutado comados de acordo com o :ue acotece semprecisar de e.um gatil.o .umao o tempo :ue *or como se *osse uma setiela=

    !sto 9 possvel com o )*or+ ele 9 um dos comados :ue possi;ilita a isero de loops em

    scripts a sua traduo 9 )para+ ou se7a para determiada codio *aa o comado e:uato ela*or verdeira=

    Haior e enor

    Po usar o comado )2orGtemos :ue sa;er o setido destes dois comparadores ? )E+ )+ Aeu uso a seguite regra para o co*udi-los

    Pense e duas 4arras 8u :uero di(er para o s.ell :ueA enor que B eto eu

    dimiuo o lado da ;arra em :ueest o P=

    "icado assim

    Pgora eu :uero di(er :ue B enor que A?ou P 9 maior :ueBA= 8to 9 s iverter a lgica=

    "icado assim 8u posso trocar o B de lugarcom o PY "icaria a mesmacoisa

    O comado :ue apresetareio podemos iverter os lados=

    Lado :ue *oi *ec.adoou se7a do meor

  • 5/26/2018 Shell Script Do Zero

    19/55

    $ntendendo o coando e criando loops liitados

    Sinta"e

    Continuando co a sinta"e

    A traduo do coando F2orG#

    Paraa varivel loop :ue vale (ero Dode os comados e:uato ela *or meor :ue 3

    8 a cada rodada acrescete 1=

    Acontece isto#

    8le veri*ica a codio e roda uma ve( loop passar a valer 1 ele veri*ica se loop estivermeor :ue 3 ele roda ovamete depois ele veri*ica e v< :ue loop vale 2 e :ue a codio aida 9

    verdeira e roda ovamete agora loop vale 3 e o 9 meor do :ue 3 eto ele dei$a de e$ecutar o)*or+ e cotiua o script 7 :ue a codio passou a ser *alsa=

    imiui ou aumeta o valorda varivel a cada rodadavarivel ou varivel--

    Os cdigos :ue *icaro rodado o loop *icam a:ui detro

    P:ui *ec.amos o )*or+ com o )doe+

    P;re aCodio

    P:ui estou usado uma varivel c.amada )loop+ode ser o ome de varivel :ue voc< :uiser=

    Ps 3 partes :ue sero e$plicadas a seguir sempresero separadas por poto e vrgula sem espao=

    ado um valor

    para a varivel loop

    P:ui 9 a c.ave do egcio ele d uma codio e:uatoela *or verdadeira o loop vai rodado este caso

    e:uato varivel loop *or meor :ue 3 ele vai e$ecutado=

    Os par

  • 5/26/2018 Shell Script Do Zero

    20/55

    Como ec.emos o comado de placas colo:uei ocdigo ao lado sem e.uma poluio= X X X

    Criando loops in2initos

    [ra(edo a lgica :ue vimos acima para criarmos loops i*iitos ;asta *a(er uma codio

    :ue 7amais dei$ar de ser verdadeira= 8$emplo

    Co*orme mostrado acima voc< deve cocordar comigo :ue

    - Loop tem o valor de 2- ara rodar o )*or+ loop deve ser maior :ue 1 ?e a codio 7 9 verdadeiraA- 8 o valor de loop uca vai dimiuir sempre vai aumetar

    Ou se7a o loop uca ser meor :ue 1 para :ue a codio se7a *alsa eto ele rodar)para sempre+=

    [e.o mais duas *ormas de escrever o )*or+ :ue *ucioa um pouco di*erete do :uee$pli:uei ateriormete como eu uca usei a prtica vou apeas apresetar=

    P:ui ele rodar 4 ve(es uma para cadaparmetro sedo :ue cada ve( :ue ele rodar avarivel )cor+ ter o valor de um parmetro :ue

    so a(ul vermel.o ===

    &samos o mesmo coceito este )*or+ a di*erea 9 :ue o usurio digita osparmetros ?:uatos :uiserA= 8le digita o comado do script espao depois osparmetros= =@script parmetro1 parmetro2 parmetro3 ===

    P codio deve ser verdadeira ao passar pelo )*or+ a primeira ve( caso se7a *alsa passar diretoe o voltar para e$ecut-lo eto preste ateo a .ora de motar a lgica= 6alvo em mometos:ue voc< colocar um loop detro de outro loop e o primeiro rodar at9 criar codi0es de cair osegudo=

    K iteressate voc< colocar o comadoec.o loop ?detro do )*or+A para irvedo a tela :uatos loops dar

    Veremos o coceito de parmetros *uturamete ele tem utilidadeo script como um todo e o somete o )*or+=

    6e criarmos um loop com comados rpidos o script dar mil.ares de voltas em poucos segudos9 recomedado colocar um sleep detro do )*or+ limitado assim o tempo das rodadas=

  • 5/26/2018 Shell Script Do Zero

    21/55

    !magie :ue voc< est saido de casa *altado 2 miutos para termiar a:uele doMload evoc< precisa *icar presete estes 2 miutos para depois a;rir outro programa de doMload torretpor e$emplo 7 :ue ele atrapal.aria o doMload atual depois disto seria ecessrio desligar o pcaps 2 .oras coverter a:uele vdeo pesado ou dar um comado demorado etc= Nas como *a(er istosem estar preseteY

    Se/a 4e5,indo ao nosso e"erccio = script reoto

    O script remoto *icar ao seu dispor para e$ecutar :ual:uer comado usaremos o rop;o$assim pelo celular ou :ual:uer dispositivo com iteret voc< poder comadar o script mas *i:ue fvotade de o usar o rop;o$ e colocar os ar:uivos em :ual:uer diretrio do pc 7 :ue a ossaiteo 9 o apredi(ado e testar osso script=

    .uncionaento

    - O script rodar 1 ve( a cada miuto- P cada rodada ele l< o ar:uivo-te$to- >o ar:uivo-te$to escreveremos o comado dese7ado- 8le e$ecuta o comado digitado e limpa o ar:uivo-te$to

    A,isos- Were ou crie o ar:uivo )comado+ usado o X ec.o bb E ON8@comado ?*ora do loopA- Voc< dever usar um certo recurso para o script o *icar agarrado o comado ?cap= 1A- &se X ec.o loopdetro do )*or+ seo vai parecer :ue deu pau- >a costruo do script dimiua o tempo de loop para *a(er os testes

    http#IIJJJ)edia2ire)coIdoJnloadIEcethuKcc=c,qI,ideoLe"ercicioL=)o*,

    >ncreento

    - 6e escrever X vivoY - ele respode X )sim vivo esperado o comado+ a reposta estar umar:uivo de leitura ?avisosA=

    'esoluo

    6e o script *or desligar o computador ou :ual:uer outro comado :ue e$i7a privil9gios rodeele como root caso cotrrio e$ecute como usurio ormal :ue 9 ;em mel.or 7 :ue a;ridoum programa como root as co*igura0es estaro di*eretes do ormal=

    ara o script apotar corretamete a .omede :ual:uer usurio :ue o e$ecute ;astausar uma das duas op0es a;ai$o

    ON8 ou @.ome@&68D

    8$emplo ec.o )teste+ E ON8@ar:uivose tras*ormar emIhoeIluizpor e$emplo

    Plguma duvida de como o script *ucioa YVe7a o vdeo com ele rodado o liQ a;ai$o

    http://www.mediafire.com/download/7ceth5ukcc4c5vq/video_exercicio_4.ogvhttp://www.mediafire.com/download/7ceth5ukcc4c5vq/video_exercicio_4.ogvhttp://www.mediafire.com/download/7ceth5ukcc4c5vq/video_exercicio_4.ogv
  • 5/26/2018 Shell Script Do Zero

    22/55

    Captulo M Nhile e &ntil

    igamos :ue os dois comados descritos a:ui tem um pouco do )i*+ e um pouco do )*or+um pouco do )*or+ por:ue eles tam;9m tem como caracterstica rodar em loop e um pouco do )i*+por:ue tem a mesma estrutura e ecessitam de uma codio para rodar=

    Nhile

    .ile em igl

  • 5/26/2018 Shell Script Do Zero

    23/55

    &m e$emplo prtico *oi o :ue usei o proteccotiuo eu pergutava ao usurio :uatospla\ers ele dese7ava adicioar o programa e :uado o script *osse criar os pla\ers ele pegava avarivel :ue usei com o usurio eto se o usurio respodeu 3 o M.ile dava 3 loops repetido ocomado detro do M.ile 3 ve(es e cose:uetemete criado o proteccotiuo para 3 pla\ers=

    (e"to

    odermos pegar te$tos para dar voltas o M.ile usado a sada de um comado pore$emplo eu *ao um programa de veri*icao e enquantoa sada deste comado *or determiadapalavra o M.ile vai rodado at9 :ue ela mude e saia do loop= Ps varia0es so i*iitas mais para*rete aprederemos a *iltrar te$tos@sadas de uma *orma :ue possamos resumi-los a uma li.a umapalavra etc=

    P seguir usaremos um loop :ue dar voltas e voltas at9 :ue o usurio decida passar adiate=

    &ntil&til sigi*ica at9 X at9 :ue determiada codio se7a verdadeira e$ecute ou se7a ele

    e$ecuta se a codio *or *alsa e s termia :uado ela *or verdadeira= 8to eu posso usar umavarivel de valor # e at:ue ela se tore 1 vai rodado e detro do util usaremos a mesma sita$ede soma :ue usamos o M.ile= O dado :ue determia o loop tam;9m pode ser te$to mas o ac.oiteressate o importate us-lo :uado ac.ar ecessrio e$ecutar o )atG=

    Sinta"e

    util ^ Codio _`do

    comadodoe

    8le 9 id

  • 5/26/2018 Shell Script Do Zero

    24/55

    $"erccio Pedindo senha ao usurio

    O que o script 2az#

    - ;oas vidas- ede se.a ao usurio

    - P se.a sedo correta ele e$ecuta o comado X ec.o )se.a correta+ e sai- Caso cotrrio o usurio teta ovamete sem sair do script ?loopA- 6o at9 # tetativas e depois das # o script mostra )tetativas esgotadas+ e sai

    8ste script ter utilidade :uado apredermos so;re *u0es 7 :ue ela 9 um atal.o :ue os7oga para determiada parte do script eto supodo :ue *aamos um programa de cdigo *ec.adoo usurio s coseguiria e$ecutar determiada parte do script se digitasse a se.a corretamete e oatal.o estaria detro do M.ile ou util=

    'esoluo

    O desa*io a:ui 9 a lgica e sa;er :uais comados colocar detro do loop=

    P se.a pode ser 123

  • 5/26/2018 Shell Script Do Zero

    25/55

    Captulo OperaQes ateticas e inicializao de scripts

    U vimos um pouco de matemtica :uado somamos o valor da varivel 1 para cotarmos oloop

    ]uado o script precisar literalmete *a(er cotas igual uma calculadora usamos a sita$ea;ai$o dei$ado a cota sempre etre os dois par[P 9 igual ao resultado da operao etre par

  • 5/26/2018 Shell Script Do Zero

    26/55

    >nicializando scripts co o sistea e pro*raando5osa:ui para ;ai$o o se preocupe em decorar ada use para cosultas *uturas=

    >nicializao

    'c0)d

    Com o diretrio rc2=d o script ser uma das Sltimas coisas a serem e$ecutadas como root;asta seguir o passo a passo a;ai$o

    colo:ue o script em X @etc@iit=dcolo:ue seu atal.o em X @etc@rc2=d@

    Ptal.os comeado com ome 6// so os Sltimos e$ecutados podedo *icar assim@etc@rc2=d@6//meusHcript

    'c)local

    Basta colocar o edereo do script o ar:uivo-te$to X etc@rc=local

    8$emplo@etc@meuHscript

    !iciali(ado com usurio especi*icosudo -u usurio @etc@script

    (a4 podeos pro*raar o script para e"ecutar e deterinados dias e horrios)

    Cron@etc@crota;

    service cro restart

    8ditamos o ar:uivo @etc@crota; levado em cosiderao os campos a;ai$o=Capo .uno Preenchiento

    1G Niuto -#/2G ora -23

    3G ia do N

  • 5/26/2018 Shell Script Do Zero

    27/55

    Captulo 19 Coando Case

    K muito mais *cil criarmos meus com um comado prprio a programao s temos o)case+ :ue *acilita em muito a costruo destas estruturas com ele podemos col.er dados de umavarivel :ue idicar :ual opo o case deve e$ecutar=

    $strutura do case

    6upodo :ue criamos um meu com 3 op0es para o usurio escol.er uma o case e$ecuta ocomado de acordo com o valor rece;ido pela varivel=

    $"eplo na prtica

    Casoo valor da varivel este7a eX 1 2 ou 3 *aa os comadoscorrespodete a seu valor

    O Smero ou palavra da opo *ica ates dos par

  • 5/26/2018 Shell Script Do Zero

    28/55

    >o e$istem limites a :uatidade de li.as :ue colocaremos as op0es eu 7 c.eguei acolocar verdadeiros scripts detro de cada uma=

    K isto o temos muito o :ue *alar do case com ele ;asta criarmos codi0es para :ue avarivel rece;a algum valor ates de e$ecut-lo e sempre repetir sua sita$e

    - P;ertura do comado X case varivelHusada i

    - Op0es :ue *icam ates dos par

  • 5/26/2018 Shell Script Do Zero

    29/55

    Captulo 11 .uno e ParTetro

    .uno

    O papel da *uo 9 segmetar vrios cdigos o scripts torado-os acessveis a :ual:uermometo e em :ual:uer parte usar a *uo 9 como colocar vrios scripts um s script= &m

    e$emplo prtico disto 9 o protec ode eu ti.a muitas op0es a serem e$ecutadas de vrias partes doscript ?o case o resolveriaA=

    >o dese.o ao ladopodemos reparar :ue temos 3*u0es e elas so acessadasdetro dos cdigos de a7uda eteste=

    >o seria vivel *a(a parte de a7uda em determiado mometo eu pergutarei ao usurio se ele dese7a istalaro rotec rotecCotiuo ou testar usado o valor da varivel vou comparar o i* ou casee$ecutado assim a *uo :ue dese7amos= 8to o dese.o apresetado podemos visuali(ar com

    as setas para ode o s.ell pode ir e da mesma *orma poderamos criar acessos de vrios potos paravrios potos=

    Sinta"e

    P sita$e da *uo ser sempre a mesma como mostrado a;ai$o primeiro o ome dela ?omeu e$emplo )istala+A depois dois paras li.as a;ai$o voc< coloca os cdigos a serem e$ecutados a *uo e :uadotermiar colo:ue outra c.ave apotado para direita *ec.ado a *uo=

    ara :uem o co.ece o protec ?o dei$a o protetor de tela *icar etrado os ossos vdeosA 9s ;ai$-lo o liQ X .ttp@@MMM=media*ire=com@doMload@rrdrMlceic(,\/@protec=(ip

    8teda :ue podemos *a(er uma )salada mista+ com os comados :ue vimos at9 a:ui M.ile detrode M.ile i* detro de i* e detro deste i* um M.ile etc= >o *i:ue com receio de *a(er estes tipos decdigos por:ue muitas das ve(es 9 esta );agua+ :ue dei$a o osso script mais *cil de motar

    http://www.mediafire.com/download/rrdrwl0ceicz8y9/protec.ziphttp://www.mediafire.com/download/rrdrwl0ceicz8y9/protec.zip
  • 5/26/2018 Shell Script Do Zero

    30/55

    epois de declarar a *uo ao s.ell vamos c.am-la para *a(er isto ;asta escrever o omeda *uo a li.a dese7ada o e$emplo a;ai$o o usurio 7 istalou o rotec e se dese7ar istal-lopara outro pla\er deve digitar a letra )i+ assim cai o i* :ue tem uma li.a c.amado a *uo deome )istala+ o :ue *a( ele )pular+ de ode est ido para outra parte do script=

    ParTetros

    Os parmetros so valores arma(eados em variveis pr9-determiadas estes valores so*orecidos :uado o usurio digita o comado :ue c.ama o programa@script pelo termial depoisde digitar o )c.amador+ damos espao e digitamos o primeiro parmetro e assim sucessivameteco*orme mostrado a;ai$o=

    Ou a prtica X a;ai$o eu te.o o script );acQ+ :ue em seu cdigo d um cp ?copiarA oprimeiro parmetro e cola o segudo=

    6em sa;er usamos os parmetros o termial o comado apt-get istall *ire*o$ apt-get 9 ocomado do programa istall e *ire*o$ so os parmetros iteramete o apt compara o valor doprimeiro parmetro para sa;er se istala remove etc= 8 depois ele pega o segudo parmetro :ueser o o;7eto a ser tratado=

    K claro :ue o apt 9 muito mais do :ue isso e temos comados gigatescos com vriosparmetros :ue eu o *ao ideia da e$plicao por9m se voc< pegou a oo de parmetros 7 9 osu*iciete=

    P *uo deve ser mostrada ao s.ell ates de ser c.amada vamos supor eu te.o uma *uoo meio do script e resolvo c.am-la o comeo o vai *ucioar por:ue o s.ell o leu aidaeu sempre coloco as *u0es o comeo do script assim d meos tra;al.o

    C.ama a *uo istala

    6e o usurio o digitar os parmetros o script vai rodar o :ue pode acotecer 9 o mesmo dar paupor *alta de dados

    $ndereo co ,rios sites tutoriais de Shell Script

    .ttp@@[email protected]@

    http://aurelio.net/shell/http://aurelio.net/shell/
  • 5/26/2018 Shell Script Do Zero

    31/55

    Sinta"e

    >s temos os parmetros 1 2 3 4 # % ' , / eto colocamos ele o script opara rece;er valor mas 7 usado os valores :ue sero digitados o termial=

    O script aterior demostra o *ucioameto dos parmetros se o usurio digitar o comadodo script e ao lado colocar X Liu$ eto ser e$ecutado o comado ec.o mostrado a palavraLiu$ se ele digitar )Liu$ e livre+ sero 3 parmetros e o s.ell e$ecutar o ec.o at9 o terceiroparmetros e assim sucessivamete=

    Ps aplica0es so i*iitas eu poderia usar o valor de um parmetro para determiar a:uatidade de loops para col.er um ome de usurio para rece;er valores a serem calculados etc=O script a;ai$o por e$emplo dorme com o tempo determiado pelo usurio e depois mata oprograma tam;9m com a idicao do usurio=

    O usurio daria um comado parecido com este X =@script 1 *ire*o$

    [ratamos os parmetros como as variveis s tedo em mete :ue o seu valorser dado pelo usurio ates de iiciar o script

    ara mais de / parmetros usaremos a dica do La9rcio de 6ousa do Z

    ara declarar mais de 1 parmetros o s.ell ;asta colocar sua e$paso etre c.aves

    1j11j12j

    8 assim sucessivamete

  • 5/26/2018 Shell Script Do Zero

    32/55

    $"erccio E .uno e parTetro no eso script

    - O usurio etra o programa utili(ado o seu ome como parmetro- Pparecer a tela de ;oas vidas costado o ome deste usurio- 8le *a( um cadastro ?poucos dados s para simular cp* 9 o;rigatrioA- 8le 9 7ogado para a seguda parte ?de compraA esta parte 9 pedido o cp* ovamete e se o

    mesmo estiver errado ?de acordo com o :ue *oi cadastradoA o script volta para cadastrar o cp*ovamete

    Bons estudos e procure entender a l%*ica de pro*raao ais do que decorar coandos

    'esoluo

  • 5/26/2018 Shell Script Do Zero

    33/55

    Captulo 10 Coandos sed: cut: pipeline: tr e *rep

    Os comados apresetados a:ui dei$am o script mais )iteligete+ a7udado-o a )ler+escrever *iltrar colocar mais de um comado a mesma li.a etc=

    O te"to a4ai"o ser usado de e"eplo nas pr%"ias 2erraentas ostradas aqui

    Sed

    O comado sed tem vrias *ucioalidades relacioadas a *iltragem como e$i;ir li.as comdetermiada palavra e$trair um trec.o do te$to trocar li.as de lugar etc= Como o material domesmo 9 vasto vamos apreder apeas a *iltrar te$tos especi*icado por li.a o :ue os a7udar as*iltrages=

    Para ostraros soente deterinada linha daos o coando#

    Nas isto o 9 o su*iciete devemos e$ecutar algum comado para :ue ele *iltre sua sadase7a o ls cat ps etc= P;ai$o eu usei o comado cat ?e$i;e o coteSdo de ar:uivos-te$toA o ossote$to e$emplo e *iltrei com o sed=

    Com o comado acima a sada o te$to de e$emplo seria esta

    L2 -porque hoje voc usa a tecnologia criada por algum no passado

    Para FeliinarosG deterinada linha#

    &samos a sita$e a;ai$o idicado a li.a a ser ocultada

    6aido assim o osso te$to e$emplo

    L2 -porque hoje voc usa a tecnologia criada por algum no passado

    L -e amanh outros podero des!rutar da sua contri"ui#o iniciada hoje$

    Ou posso elimiar mais de uma li.a

    Li.a 2

    Pgora sim a sada do comado cat so 3 li.as o sed pega este resultado *a( a *iltragem emostra apeas a li.a 2= Veremos a ;arra ates do sed esta aula por e:uato ;asta

    sa;er :ue *a( o sed processar o resultado do primeiro comado=

    Como so 3 li.as poderamos usar ocomado de icluir e c.egaramos omesmo resultado mas 9 s e$emplo=

    L% -&ontri"uir com o so!t'are livre contri"uir consigo mesmo,

    L2 -porque hoje voc usa a tecnologia criada por algum no passado

    L -e amanh outros podero des!rutar da sua contri"ui#o iniciada hoje$

  • 5/26/2018 Shell Script Do Zero

    34/55

    Saindo assi#

    L2 -porque hoje voc usa a tecnologia criada por algum no passado

    Como somos usurios iiciates o s.ell apresetei apeas o ;sico e a sua cami.adavoc< poder co.ecer os vrios recursos :ue este comado tem=

    Caso :ueira se apro*udar o sed acesse o liQ.ttp@@t.o;ias=org@doc@sosed=.tml

    Cut

    Com o cut limitamos a sada dos comados em campos este te$to :ue escrevo podemoscosiderar :ue seus campos so determiados pelo carcter )espao+ eto se eu pedir ao cut :ueme mostre o coteSdo do campo 3 ele me retorar a palavra )cut+ por:ue as palavras so oscampos e os espaos mostram ao s.ell ode 9 a delimitao dos mesmos ada te impede de usar aletra )a+ por e$emplo como delimitador sair um resultado muito louco com isto digo :ue 9 voco e$emplo aterior cosiderei o te$to o tedo e.um eter ou se7a se temos umar:uivo com vrias li.as :ue so e$i;idas separadamete o cut mostrar o campo k de cada li.a=

    O te$to a;ai$o por e$emplo podemos usar o delimitador )dois potos+

    8to usado o comado cut para mostrar o campo 2 seria e$i;ido isto

    Se quiseros ostrar soente a pala,ra FpretoG s% usar o cut e sed

    cat te$to T )cut+ pedido o 2G campo T sed - 3p mostrou a li.a 3

    mousea(ulovocarro;racousadoradiopretoovo

    a(ul;racopreto

    preto

    O importate 9 sempre procurar padr0es :ue l.es sirvam de ;ase para c.egar o coteSdo:ue alimete corretamete o script= >o comado ps podemos *iltr-lo de uma *orma :ue c.eguemossomete o pid o pro;lema 9 :ue o pid passado de certa umerao ga.a mais um carcterum9rico dimiuido um carcter espao ou se7a o seu comado :ue *ucioava per*eitametesimplesmete o vai servir mais ?tem maeiras de cotorar isto mas o a;ordarei a:uiA=

    8to preste ateo em todas as varia0es possveis para evitar erros o script :ue emsempre so *ceis de e$ergar=

    Sinta"e

    Coando 52 ais nero do capo a serostrado

    Aqui ostro o carcter que deterina ocapo FespaoG)

    mousea(ulovocarro;racousadoradiopretoovo

    a(ul;racopreto

    http://thobias.org/doc/sosed.htmlhttp://thobias.org/doc/sosed.html
  • 5/26/2018 Shell Script Do Zero

    35/55

    a mesma *orma :ue o sed o cut tam;9m precisa de usar o resultado de outro comado

    Desultado do comado acima dado o te$to e$emplo ?somete a primeira li.a e sem o L1A

    K isto :ue t.amos so;re o cut e uca es:uea :ue um dia voc< precisar de umai*ormao to especi*ica para o seu script e o cut sed sero a soluo=

    Pipeline

    Nuitas ve(es precisamos pegar a sada do comado P para usarmos o comado B e c.egaro resultado *ial com o comado C etc= Pl9m disto podemos dimiuir o tama.o do script

    7utado vrios comados a mesma li.a 9 e$atamete isto :ue o pipelie *a( ele 9 represetadopelo sm;olo )T+ :ue est ao lado da letra )(+ ;astado digit-lo com o s.i*t=

    $"eplo siples#

    >o e$emplo acima eu precisava (erar os ar:uivos-te$to resposveis pelo loop e o *a(iamuito setido usar vrias li.as para isto eto colo:uei todos cocateados a mesma li.ausado o pipelie= ?mais tarde eu desco;ri :ue o precisava usar ar:uivo-te$to para o loop rsrsA

    $"eplo ais a,anado#

    Pcima dou 3 pigs limito a sada para o campo 1 ?determiado por espaoA e o resultadodisto eu aida pego e mostro apeas a li.a 4 usado o sed=

    ara usar o pipelie ;asta ter criatividade se7a para c.egar um resultado :ue seria maisdi*cil de ecotrar sem o pipe ou apeas para compactar o script o importate 9 sempre testarpor:ue em tudo :ue parece *ucioar vai *ucioar=

    (r

    Com este comado 9 possvel su;stituir caracteres de um te$to por outros 9 claro :uepodemos icluir como te$to um script ou um ar:uivo de co*igurao por e$emplo=

    Sinta"e

    Coando Pala,ra ou carcter a ser su4stitudo O que ,ai entrar no lu*ar

    tr ^ae_ ^43_

    K importate o dei$ar espaos detro dos colc.etes para *ucioar

    ipelie

  • 5/26/2018 Shell Script Do Zero

    36/55

    8$ecutado o comado a;ai$o em osso te$to e$emplo ele su;stituir a letra )a+ peloSmero )4+ e a letra )e+ pelo Smero 3=

    .icando assi#&ontri"uir com o so!t'r livr contri"uir consigo msmo,

    porqu hoj voc us tcnologi crid por lgum no pssdo mnh outros podro ds!rutr d su contri"ui#o inicid hoj$

    &ma *uo muito Stil o comado tr 9 a de tras*ormar caracteres miSsculos emmaiSsculos e vice-versa assim se pedirmos ao usurio :ue digite algo e :ue este valor se7a

    o;rigatrio em maiSsculo ou miSsculo podemos tras*ormar este valor com o tr garatido assimo *ucioameto do script=

    (rans2ora tudo e aiscula (udo inscula

    cat te$to T tr a-( P-W cat te$to T tr P-W a-(

    $liina o que te entre aspas do te"to +aqui eliina espaos-

    cat te$to T tr -d b b

    O cdigo a;ai$o 9 um e$emplo de como podemos pedir um valor ao usurio e tras*orm-lo

    do 7eito :ue :uisermos a:ui passo tudo :ue esta maiSsculo para miSsculo= 6e o usurio digitar)CP6P+ eto o valor da se.a passar a ser )casa+ se ele digitar )CPsa+ eto teremos )casa+ eassim por diate=

    Urep

    Com o comado grep tam;9m *iltramos sadas mas a:ui 9 por palavra e o por Smero deli.a este comado mostra todas as li.as ode .a7a a icid

  • 5/26/2018 Shell Script Do Zero

    37/55

    aos supor que ,ou dar o coando Fls 5laG no FIhoeG o resultado ser 4e *rande: aseu dese/o localizar os diret%rios contendo o noe F*noeG: ento V

    Se *rep Co *rep

    8 muito mais resultado para ;ai$o

    Nostrado apeas as li.as ode costam apalavra gome

    6e .ouver :ual:uer di*iculdade com este comado ;asta trei-lo o termial *iltrado assadas dos comados :ue voc< est acostumado usar=

    $"erccio M &sando os coandos

    &sado a sada do comado )ls -la+ o @.ome

    .aa u coando que e"i4a#

    6omete o mov

    ode ser o m

  • 5/26/2018 Shell Script Do Zero

    38/55

    Captulo 17 Wltios coandos

    Contando as linhas co o NC

    Pl9m de li.as o Mc cota ;\tes caracteres palavras etc= Vide maual ?ma McA ele podeser muito Stil 7 :ue em determiadas situa0es precisaremos sa;er o Smero de li.as totais para

    rodar um loop por e$emplo=

    Sinta"e

    Coando que colhe os dados R pipeline Coando Jc contando as linhas

    cat te$to T Mc -l

    P:ui o cat mostraria todo o te$to como temos o Mc ele pega a sada cota :uatas li.as emostra somete a cotagem a tela= Nuito simples 7 :ue voc< co.ece o *ucioameto decomados :ue usam a sada de outros comados=

    (ie

    odemos croometrar o tempo de e$ecuo dos comados e$ecutados o s.ell para isto;asta colocar o )time+ ates do comado assim

    >o mometo eu o *ao ideia de uma aplicao prtica deste comado :ue o se7a a

    curiosidade mas uca se sa;e :uado criaremos um programa :ue ecessite col.er os dados dotempo de e$ecuo de determiado comado=

    Caso precise usar o te$to al9m de sua cotagem o recomedado 9 direcioar a sada docat para um ar:uivo-te$to )E+ e em outra li.a usar o comado Mc este ar:uivo=

  • 5/26/2018 Shell Script Do Zero

    39/55

    Sort

    Com o sort podemos ordear as sadas dos comados al*a;9tica e umericamete

    6em e.uma opo ele classi*icar as sadas al*a;eticamete

    &sado a opo - temos a classi*icao um9rica

    $liinando a sada dos coandos

    Nuitas ve(es precisamos :ue o script e$ecute determiado comado e :ue o se7amostrado ada a tela para o usurio para isto direcioamos a sada para um );uraco egro+ oLiu$=

    irecioamos para o )E @dev@ull+

    $"eplo#

    Pcima dois comados de um script ode era mel.or o co*udir o usurio com a sadados comados=

  • 5/26/2018 Shell Script Do Zero

    40/55

    .i*let

    Com o *iglet podemos e$i;ir as *amosas escritas *eitas o termial ado assim umaicremetada o seu visual

    Sinta"e#

    *iglet palavra

    K provvel :ue o *iglet o ve.a istalado por padro por isto depededo do cote$tovoc< pode usar o pr$imo comado=

    Nhich

    Com este comado veri*icamos se determiado programa esta istalado como mostradoa;ai$o o programa mpg123 o estava istalado por isto o valor retorado *oi va(io e:uato :ue o*ire*o$ 7 estava e ele mostrou ode o e$ecutvel se ecotrava=

    Sinta"e

    M.ic. programa

    P;ai$o eu criei uma varivel :ue rece;e o valor do comado M.ic. se ela estiver va(ia euperguto ao usurio se ele dese7a istalar o mpg123=

  • 5/26/2018 Shell Script Do Zero

    41/55

    >d 5u +,eri2icando se root-

    Plgumas ve(es o script roda da maeira esperada apeas como root ou como usurioormal para *a(er esta ideti*icao usamos o comado )id -u+ :uado e$ecutado ele poderetorar o valor )+ ?(eroA o :ue sigi*ica :ue estamos logados com usurio detetor de privil9giosroot caso cotrrio idica :ue o mesmo o tem privil9gios=

    P sita$e 9 simplesmete )id -u+ a;ai$o temos as primeiras li.as do protec ode o mesmoo pode ser e$ecutado como root seo temos uma s9rie de erros eto a primeira coisa :ue oprograma *a( 9 a veri*icao e caso o usurio se7a root 9 mostrado uma mesagem e e$it=

    $"erccio Con2i*urando o Sa4a

    Vamos criar um script :ue automati(a a co*igurao do sam;a ?programa :ue compartil.aar:uivos etre liu$-MidoMs liu$-liu$A *acilitado assim a vida do usurio=

    inhas do Sa4a

    Com as li.as a;ai$o gravadas o @etc@sam;a@sm;=co* 7 so su*icietes para compartil.arar:uivos a rede=

    ^glo;al_MorQgroup admiI >ome da redeame resolve order lm.osts Mis ;cast .ostI 8vita erros de mapeameto

    ^ar:uivos_ I >ome :ue ser e$i;ido para o diretrio em :uestopat. @.ome@lui(I asta compartil.adaread ol\ oI permisso de escrita ?o 9 de*aultApu;lic \esI ermisso para covidados ?9 ecessrio :ue o usurio este7a adicioado o sam;aA

    Pcima os ites em a(ul sero dados pelos usurios ?atrav9s de variveisA e o restate sero *i$os

    Caractersticas do pro*raa

    - !stala o sam;a se ecessrio- 8$plica :ue o programa cria um compartil.ameto pu;lico=- Neu X 1- >ova co*igurao 2- Pdicioar ovo diretrio 3- Pdicioar ovo usurio

    - erguta ao usurio X ome da rede diretrio a ser compartil.ado e o ome :ue aparecer- Deomeia o sm;=co* atual criado um ;acQup- 8screve o ovo sm;=co* usado as i*orma0es dadas pelo usurio- erguta e adicioa usurios de outras m:uias +Xadduser usurio e Xs4passJd 5a usurio-- 8 perguta e adicioa o usurio local ao sam;a +Xs4passJd 5a usurio-- Deiicia o sam;a ? sudo ser,ice n4d restarte sudo ser,ice s4d restartA- Pvisa :ue em ;reve o compartil.ameto 7 estar ativo e sai

    Visuali(e a imagem a;ai$o para o errar a .ora de imprimir os dados o sm;=co*

    'esoluo

    Pteo :uado *or veri*icar se o sam;a est istalado vocndentao

    !detao 9 um recuo o te$to a programao usamos para dei$ar os cdigos maislegveis *acilitado assim a compreeso das vastas li.as de um script= >o s.ell ela o 9o;rigatria mas se vamos escrever ceteas de li.as 9 recomedvel us-la=

    Como o domio o tema vou dar a mi.a cotri;uio da *orma :ue uso eto sita-se f

    votade em apro*udar o tema=

    O coceito 9 simples se temos um cdigo detro de outro damos 3 espaos e assim pordiate=

    Pcima temos o i* detro do M.ile por isto ele est 3 espaos a *rete e detro do i* temosuma c.amada de *uo )istala+ e tam;9m est 3 espaos a *rete a situao do )else+ 9 a mesmado )istala+ cose:uetemete esto a mesma colua e como o e$it est detro do )else+cose:uetemete ele rece;e os espaos=

    Depare os comados :ue *ec.am o M.ile e i* eles esto retes aos comados :ue os a;rem?ol.e os potil.adosA assim mesmo se tivermos um Smero grade de i*s M.iles etc= o script odar tata co*uso 7 :ue *ica mais *cil de visuali(ar ode comea e ode termia as estruturas e

    :uais comados esto detro de :uais comados=

    Olhe a di2erena dos c%di*os se or*anizao#

    Outra coisa que recoendo usar coentrios para di,idir seQes no script#

    IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII CPNP PU&P IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII

    CdigosIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 86!>6[PLP IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII

    Cdigos

    e :ual:uer *orma voc< etededo seus cdigos 9 o :ue importa=

  • 5/26/2018 Shell Script Do Zero

    43/55

    Captulo 1 Script co /anelas

    Script co /anelas

    Ps 7aelas so uma esp9cie de iter*ace gr*ica para os ossos scripts :ue iteragem com oclicar do mouse usado elas mel.oramos em muito sua apars poderemos recol.er se.as respostas dar simples avisos etc= Vai depeder do tipo:ueusaremos com o comado=

    Ppeas o --tipo ser modi*icado a sita$e a;ai$o o resto 9 padro

    dialog --tipo te$to altura largura

    s*4o" +cai"a de ensa*e-

    8ste tipo possi;ilita mostrar uma mesagem a tela ;astado dar oQ depois de lida paraprosseguir o script=

    Sinta"eI$"eplodialog --msg;o$ 8sta 9 uma area restrita ' 4

    Saindo assi no terinal#

    >n2o4o" +cai"a de in2orao-

    P:ui mostramos uma mesagem e logo em seguida o script cotiua e$ecutado sem pedir

    co*irmao=

    Sinta"eI$"eplodialog --i*o;o$ istalado os pacotes 1 4

    P seguir vamos co.ecer algus tipos de 7aelas

  • 5/26/2018 Shell Script Do Zero

    44/55

    (e"t4o" +cai"a de te"to-

    Com este tipo podemos e$i;ir um ar:uivo-te$to o termial como istru0es co*igura0esetc= a;ai$o peo para o s.ell mostrar o ar:uivo de co*igurao do sam;a

    Sinta"eI$"eplo

    dialog --te$t;o$ @etc@sam;a@sm;=co* 4 %

    Ode o usurio clica em para su;ir o te$to e temos a porcetagem do :ue 7 *oi e$i;ido=

    Yesno +Si ou no-

    Pgora podemos *a(er uma perguta ao usurio e esperar :ue o mesmo respoda \es ou o

    Sinta"eI$"eplodialog --\eso ese7a istalar agora Y # 3

    ara usar a resposta o script devemos utili(ar a varivel )Y+ ?leia a;ai$oA

  • 5/26/2018 Shell Script Do Zero

    45/55

    $"ataente deste /eito: 4astando udar os coandos internos#

    i* ^ Y _` t.e apt-get istall *ire*o$ else ec.o bVoc< pode istalar o avegador mais tardeb

    e$it*i

    "oram apresetadas as 7aelas mais simples se voc< dese7a usar outros tipos a;ai$o temosuma apresetao ;reve para :ue voc< possa pes:uisar sua utili(ao

    gauge Barra de porcetagem

    c.ecQlist Nostra um meu para escol.as multiplas

    meu Neu para a escol.a de apeas 1 item

    caledar Nostra um caledrio para o usurio escol.er uma data*select igita ou selecioa um ar:uivo

    passMord;o$ ede uma se.a

    Wero 9 correspode a sim

  • 5/26/2018 Shell Script Do Zero

    46/55

    $"erccio 'esol,idos

    $"erccio 1 Prieiro script

    I@;i@;as.

    I 8ste comeo tem apeas a parte escrita a telaec.o bBem vido ao sistema de marcao oliebec.oec.o

    I 6e dou opo um9rica 9 mel.or assim evitamos do usurio digitar errado ou com acetosec.o bor *avor digite a opo do turo dese7adobec.oec.o b1 - Na.bec.o b2 - [ardeb

    ec.o b3 - >oitebec.o I 8spao para o *icar em;olado com a resposta

    I Col.edo os dados do turoread [&D>O

    I 8stou colocado como al*aum9rico por:ue o vou *a(er clculos e o :uero ter pro;lemasi* ^ b[&D>Ob b1b _`t.e

    ec.o bPpeas o outor ager atede o turo da ma.b*i

    i* ^ b[&D>Ob b2b _`t.eec.o bPpeas a doutora Camila atede o turo da tardeb

    *i

    i* ^ b[&D>Ob b3b _`t.eec.o bPpeas o outor Cesar atede o turo oiteb

    *i

    I "a(edo o programa dormir por 2 segudossleep 2

    ec.oec.o b6ua cosulta *oi marcada com sucessob

    I ormido para dar tempo de ler a mesagem e depois saisleep 4

    I 6aidoe$it

  • 5/26/2018 Shell Script Do Zero

    47/55

    $"erccio 0 Script ais ela4orado

    I@;i@;as.

    ec.o bOl a;ai$o os carros dispoveis este m

  • 5/26/2018 Shell Script Do Zero

    48/55

    $"erccio 7 5 %*ica dos PC1 e PC0

    I@;i@;as.ec.o bor *avor digite ligado ou desligado para i*ormar o estado dos computadores a;ai$obec.oec.o bC1b

    read C1ec.o

    ec.o bC2bread C2ec.o

    I !>CD8N8>[O 6e o usurio digitou algo :ue o se7a ligado e desligado eto cai este i*i* ^ bC1b bligadob -a bC1b bdesligadob _`t.e

    ec.o b8stado ivalido para C1 tete ovametebsleep 3

    e$it*i

    I i* de erro para o C2i* ^ bC2b bligadob -a bC2b bdesligadob _`t.e

    ec.o b8stado ivalido para C2 tete ovametebsleep 3e$it

    *i

    I osso usar tato bC2 desligadob :uato bC2 ligadob a seguda opo vai o resto do scriptI 6e pc 1 estiver ligado e o 2 estiver desligado *aa o comadoi* ^ bC1b bligadob -a bC2b bdesligadob _`t.e

    ec.o bValor da amostra 9 igual a #b*i

    I Pcima se eu o icluir o C2 desligado vai virar uma ;agua e cair a:uele i* mesmo :uadoI C2 estiver ligado ou se7a mostrar mais de um resultado

    I >o corre o risco do b ligadob ser outra palavra :ue o se7a desligado 7 :ue o primeiroI !cremeto se ecarregou de elimiar outras escritas

    i* ^ bC2b bligadob -a bC1b bligadob _`t.e I 6e C2 estiver ligado ===ec.o bValor da amostra 9 igual a 1b*i

    i* ^ bC1b bligadob -a bC2b bligadob _`t.e I 6e C1 e 2 estiverem ligados cai a:ui ec.o bValor da amostra 9 igual a 1#b*i

    I !>CD8N8>[O mostrado o resultado :uado dois pcs estiverem 86L!ZPO6i* ^ bC1b bligadob -a bC2b bligadob _`t.e

    ec.o bValor da amostra 9 igual a (erob

    *i

    e$it

  • 5/26/2018 Shell Script Do Zero

    49/55

    $"erccio = 5 'eoto

    I@;i@;as.

    I Criado ou (erado os ar:uivos-te$toec.o bb E ON8@comado

    ec.o bb E ON8@aviso

    I Loop i*iito*or ??loop2`loopE1`loopAA`do

    I Colocado a velocidade do loop em 1 miutosleep %ec.o loop I Nostrado a rodada a tela

    I Ledo o ar:uivo-te$to e passado o valor para a varivelCONP>O?cat ON8@comadoA

    I !>CD8N8>[O respode :ue esta rodado caso pergutadoi* ^ bCONP>Ob bvivoYb _`t.e

    ec.o bsim vivo esperado o comado loop loopb EE ON8@avisoCONP>Obb I (erado a varivel para o cair o pr$imo i*ec.o E ON8@comado I Limpado o ar:uivo-te$to

    *i

    I 6e a varivel CONP>O o estiver va(ia eto vou e$ecutar o comado detro delai* ^ - bCONP>Ob _`t.e

    CONP>OF I Colo:uei o F para o script o *icar agarrado a:uiec.o E ON8@comado I Limpado o ar:uivo com o comado

    I 8screvedo o comado e$ecutado o ar:uivo avisosec.o b8$ecuteib CONP>O bloop loopb EE ON8@aviso

    *i

    doe

    I 8le uca vai sair do loop i*iito eto o 7usti*ica colocar o e$it

  • 5/26/2018 Shell Script Do Zero

    50/55

    $"erccio 5 Senha

    I@;i@;as.

    ec.oec.o b 6e7a Bem-vidob

    ec.oec.o bor *avor digite a se.a para logar o sistemabec.oread 68>P

    I (erado a variavel de loop$bb

    I 8:uato $ *or meor :ue 4 *aa ?cotei com a primeira tetativa acimaA M.ile ^ $ -lt 4 _`do

    I 6e a se.a *or igual a 123 eto *aa o comadoi* ^ b68>Pb b123b _`t.e

    ec.oec.o b6e.a correta logado o sistemabsleep 2e$it

    *i

    I 6e ele o cair o i* pede a se.a ovameteec.oec.o b6e.a icorreta tete ovametebread 68>P

    I colocado 1 para cotarmos as rodadas$^$1_

    doe

    I "ora do loop eu coloco estes comados eto assim :ue as tetativas se esgotaremI 8le sai do loop e e$ecuta a:uiec.o

    ec.o b>Smero de tetativas esgotado tete mais tardebsleep 2

    e$it

  • 5/26/2018 Shell Script Do Zero

    51/55

    $"erccio D Pequeno desa2io de l%*ica

    I@;i@;as.

    I P:ui eu pego o valor da varivel para ser multiplicadoec.o bor *avor digite o Smero a ser processadob

    ec.oread >&N

    I etermiado um valor para a varivel do M.ileVOL[Pb1b

    I Criado o loop assim vamos rodar o case 3 ve(es

    M.ile ^ VOL[P -lt 4 _`do I 8:uato VOL[P *or meor :ue 4 *aa o comado ?roda 3 ve(esA

    I 8stou usado a varivel de loop o case assim a cada rodada uma opo di*erete ser e$ecutada

    case VOL[P i

    I ego o valor dado pelo usurio e multiplico pelo valor pr9-determiado o e$erccio1A CO>[P?? >&N J 1 AA

    ec.o bDodada 1 - >&N multiplicado por 1 9 igual a CO>[Pb``

    2A CO>[P?? >&N J 2 AAec.o bDodada 2 - >&N multiplicado por 2 9 igual a CO>[Pb``

    I P cada rodada a varivel CO>[P rece;er um valor di*erete eto o precisamos criarIuma varivel di*erete para cada opo do meu

    3A CO>[P?? >&N J 3 AAec.o bDodada 3 - >&N multiplicado por 3 9 igual a CO>[Pb``

    esac

    I 6omado os Smeros de voltas do M.ile *ora do case logicameteVOL[P^ VOL[P 1 _

    doe

  • 5/26/2018 Shell Script Do Zero

    52/55

    $"erccio E 5 .uno e parTetro no eso script

    I@;i@;as.I eu o *i( os cdigos esta ordem a toa algumas caiam uma bsiuca de ;icob ec.oec.o bBem vido 1b

    I Col.edo os dados do cadastroec.oec.o bigite o ome da sua cidadebread C!P8ec.oec.o bigite seu C8bread C8ec.o

    I "uo :ue cadastra o C"

    CPP6[DO?Aec.o bigite seu C"bread C"ec.oec.o bCadastro *iali(ado com sucessobLOZP>O I Pgora c.amamos a *uo de logar

    j

    LOZP>O?A

    ec.oec.o bigite seu C" para logarmosbread C"2ec.o

    I P:ui comparo os C"s como te$toi* ^ bC"b bC"2b _`t.e I 6e C" digitado ateriormete 9 igual ao agora eto logue

    ec.o blogado com sucessobsleep #e$it I epois de dormir # segudos ele sai por:ue 7 alcaamos os ossos o;7etivoselse I 6eo *or igual durma e c.ame CPP6[DO para rece;ermos o cp* ovamete

    ec.o bC" icorreto por*avor tete ovametebsleep 3 I ado uma dormida para dar tempo do usurio ler a mesagem de erroCPP6[DO

    *ij

    I O s.ell vai ler as duas *u0es depois passa por a:ui c.amado a *uo CPP6[DOCPP6[DO

    I P Sica *orma do usurio sair do script 9 digitado o C" corretamete se *osse um scriptI para empresa 9 claro :ue colocaramos outras op0es

  • 5/26/2018 Shell Script Do Zero

    53/55

    $"erccio Con2i*urando o Sa4a

    I@;i@;as.

    ![?M.ic. sm;dAI 6e o sam;a o estiver istalado cai a:ui

    i* ^ -( b![b _`t.e ec.o bO sam;a o est istalado dese7a istal-lo agoraY s@b read !>6[PLP i* ^ b!>6[PLPb bsb _`t.e apt-get istall sam;a else e$it *i*i

    ec.o

    ec.o b6e7a Bem-vido a seguir vamos co*igurar um compartil.ameto pu;licobec.o b8scol.a a opo dese7adabec.oec.o b1- ara ova co*iguraobec.o b2- ara adicioar um diretrio ao compartil.ameto 7 co*iguradobec.o b3- Pdicioar um ovo usuriob

    read N8>&case N8>& i

    1A ec.o ec.o ec.o bigite o ome da sua rede de compartil.ametob read D88 ec.o ec.o bigite o edereo do diretrio a ser compartil.adob read !D8[OD!O ec.o ec.o b]ual o ome ser e$i;ido a rede para este diretrioYb read >ON8H!D

    I Deomeado o ar:uivo de co*igurao para escrevermos um ovo mv @etc@sam;a@sm;=co* @etc@sam;a@BRsm;=co*

    I 8screvedo o ovo sm;=co* ec.o b^glo;al_b E @etc@sam;a@sm;=co* I Werado ou criado o ar:uivo ec.o bMorQgroup D88b EE @etc@sam;a@sm;=co*

    ec.o bame resolve order lm.osts Mis ;cast .osb EE @etc@sam;a@sm;=co*

    ec.o bb EE @etc@sam;a@sm;=co* I 8screvedo uma li.a de espao

    ec.o b^>ON8H!D_b EE @etc@sam;a@sm;=co* ec.o bpat. !D8[OD!Ob EE @etc@sam;a@sm;=co* ec.o bread ol\ ob EE @etc@sam;a@sm;=co*

  • 5/26/2018 Shell Script Do Zero

    54/55

    ec.o bpu;lic \esb EE @etc@sam;a@sm;=co*

    I Loop :ue adicioa usurios de outro C ec.o ec.o bPlgum usurio de outra m:uia vai usar este compartil.ametoY s@b read NP!6

    M.ile ^ bNP!6b bsb _`do ec.o

    ec.o b]ualYb read &6&HLP

    adduser &6&HLP sm;passMd -a &6&HLP

    ec.o ec.o bmais algum usurio para adicioarY s@b

    read NP!6 doe

    ec.o ec.o bPgora i*orme o ome do seu usurio para :ue eu possa adicio-lob read &6& sm;passMd -a &6&

    service m;d restart E @dev@ull service sm;d restart E @dev@ull

    ec.o ec.o bCo*igurao cocluda aguarde um mometob ec.o be Liu$ para Liu$ demora um pouco a iiciarb

    e$it``

    2A I Loop :ue adicioa mais diretrios NP!61bsb I Zaratido o primeiro loop M.ile ^ bNP!61b bsb _`do

    ec.o ec.o bigite o edereo do ovo diretrio a ser compartil.adob read !D8[OD!O ec.o ec.o b]ual o ome ser e$i;ido a rede para este diretrioYb read >ON8H!D

    ec.o bb EE @etc@sam;a@sm;=co* I 8screvedo uma li.a de espao

    ec.o b^>ON8H!D_b EE @etc@sam;a@sm;=co* ec.o bpat. !D8[OD!Ob EE @etc@sam;a@sm;=co*

    ec.o bread ol\ ob EE @etc@sam;a@sm;=co* ec.o bpu;lic \esb EE @etc@sam;a@sm;=co*

  • 5/26/2018 Shell Script Do Zero

    55/55

    ec.o ec.o bmais algum diretrioY s@b read NP!61 doe

    service m;d restart E @dev@ull

    service sm;d restart E @dev@ull

    ec.o ec.o bCo*igurao cocluda aguarde um mometob e$it``

    3A I Loop :ue adicioa usurios de outro C NP!62bsb I Zaratido o primeiro loop M.ile ^ bNP!62b bsb _`do ec.o bigite o ome de usuriob

    read &6&HLP

    adduser &6&HLP sm;passMd -a &6&HLP

    ec.o bmais algum usurio para adicioarY s@b read NP!62 doe

    service m;d restart E @dev@ull service sm;d restart E @dev@ull

    ec.o ec.o bCo*igurao cocluda aguarde um mometob e$it``esac