Bash: Kahanan (yen-banjur-liya)

Halo 😀

Ing wektu iki aku bakal nuduhake sampeyan carane nggawe skrip kanthi kondhisi ing Bash, sing jarwane yaiku:

Yen X sing sampeyan karepake wis rampung, tumindak Y bakal ditindakake, yen ora ditindakake mula bakal ditindakake tindakan liya.

Katrangan sing gampang ora 😀

Saiki, aku wis mikir sawetara conto kanggo digunakake ing tutorial iki, ana dilema / masalah / kahanan ing ngisor iki:

Kita ana ing jaringan perusahaan, lan pengin ngerti manawa komputer X nyambung karo jaringan kasebut. Kanggo iki, kita nggawe script apa sing bakal ditindakake ping menyang komputer kasebut, lan yen ana ing jaringan (yaiku, yen ngasilake ping) bakal ngandhani manawa YES, ana ing jaringan, yen ora (yaiku, ora ana ing jaringan) bakal menehi katrangan manawa TIDAK ana ing jaringan.

Yen wis rampung, saiki aku bakal nerangake carane muter nganggo kahanan 🙂

Iki kode:

ping -c 1 DIRECCION-IP
if [ $? -ne 0 ]; then
echo "No está en red"
else
echo "Sí está en red"
fi

Aja kuwatir, aku bakal nerangake kanthi rinci babagan sampeyan 😉

ping minangka prentah sing bakal digunakake, lan bakal menehi katrangan manawa PC kasebut ana ing jaringan. Kanggo ngandhani PC sing pengin dipriksa manawa ana ing jaringan utawa ora, kita kudu ngganti IP ADRESS kanthi jelas alamat IP PC sing pengin dipriksa.

Kaya sing sampeyan ngerteni, aku sijine «-c 1«, Sing perlu kanggo kita. Nalika nulis komputer, tumindak iki ora bakal mandheg (ping) nganti pencet dhewe [Ctrl] + [C], dadi nempatno «-c 1»Kita ngandhani supaya mung nindakake siji verifikasi (mung siji upaya ping) lan ora ana liyane, iki bakal mandheg langsung, yaiku… bakal mriksa manawa komputer mung ana ing jaringan.

Yen sampeyan ora mangu-mangu babagan iki, ora krasa lara ... jarene lan aku bakal seneng nerangake maneh marang dheweke 😉

Saiki dadi siklus, amarga sing dakkandhakake ora liya yaiku prentah / tumindak normal 😀

if [ $? -ne 0 ]; then
echo "No está en red"
else
echo "Sí está en red"
fi

Supaya sampeyan ngerti iki, aku bakal nerangake rincian Bash sing penting banget

Subyek sing paling ngerti babagan iki bisa uga diarani saya salah utawa kaya ngono, nanging hei, aku nulis iki kanggo para pemula utawa kurang ahli, anggere bisa ngerteni luwih becik 😉

Mengkono kaya ing Bash iku kaya 0 y 1, yaiku, sampeyan isih urip utawa sampeyan wis mati, nalika ana prentah utawa tumindak sing ditindakake: Utawa kaleksanan kanthi becik Ora masalah (1), utawa ana sawetara masalah utawa kesalahan (0).

Kita nindakake tumindak utawa prentah X, lan apa sing ditindakake bisa uga ditindakake kanthi apik utawa ora apik, bisa uga duwe kesalahan utawa ora, lan ing kene rinci

Yen apa sing bakal dikirim (ing kasus iki: ping -c 1 IP-ALAMAT) ora menehi kesalahan lan sukses, mula bakal ngasilake regane: 1 . Yen ora, lan yen tumindak (yaiku ping) ora sukses, bakal ngasilake regane 0.

 Lan pungkasane, tegese kode ing ndhuwur yaiku:

Yen regane 0 dikembalikan, mula

Tampilake teks: «Ora ing jaringan»

Yen ora (lan bali ORA 0, nanging 1)

Tampilake teks: «Yen ana ing jaringan«

Iki sing wis dakkandhakake marang sampeyan, bakal ngatasi pirang-pirang perkara ing mbesuk, amarga pancen migunani manawa bisa ujar manawa yen tumindak X menehi kesalahan, tindakake tumindak Y, lan yen tumindak X durung diwenehi kesalahan, banjur tumindak Z.

Aku ngerti manawa ana sing rada bingung, mula aku nyoba nerangake kanthi macem-macem cara, nyoba supaya kabeh wong pahami kanthi cara liya. Yen ana wong sing ragu-ragu, coba dakkandhani.

Saiki, ayo nggawe skrip kita 😀

Kita kudu tindakake langkah-langkah ing tutorial iki: Bash: Cara nggawe skrip sing bisa dieksekusi

Banjur ayo nyalin kode ing ngisor iki menyang file kasebut (skrip.sh), lan ing pungkasan ayo ngomong «metu»(Tanpa kuotasi):

ping -c 1 DIRECCION-IP
if [ $? -ne 0 ]; then
echo "No está en red"
else
echo "Sí está en red"
fi

Kayane katon kaya iki (elinga yen sampeyan kudu ngowahi IP-ADDRESS dadi IP sing sampeyan karepake):

Ing kene sampeyan bisa ndeleng skrip sing mlaku:

% KODE1%

Kaya sing sampeyan ngerteni, pungkasane dheweke ngandhani «Ya ana ing jaringan»🙂

Sing penting ing kene yaiku dheweke ngerti tenan babagan kondhisi, mula aku menehi kode liyane kanggo nerangake maneh, nanging saka sudut pandang liyane.

read "texto"
if [ "$texto" = "3" ]; then
echo "Correcto"
else
echo "Incorrecto"
fi

Sing artine sederhana, aku bakal menehi penjelasan miturut baris:

Baris kaping 1: Apa sing kita tulis, bakal dadi angka variabel «tulisan»(Tanpa kuotasi).

Baris kaping 2: Priksa manawa isi variabel (apa sing nembe ditulis) 3.

Baris kaping 3: Yen ana 3, bakal nuduhake teks «Correcto»(Tanpa kuotasi).

Baris kaping 4: Yen ora (yaiku, yen durung nulis 3).

Baris kaping 5: Bakal nuduhake teks «Salah»(Tanpa kuotasi).

Baris kaping 6: Pungkasan kahanan.

Kaya sing wis bisa dielingi, yen kita ujar kumandhang banjur ing antarane kutipan dobel («) teks, iki bakal nyebabake teks ditampilake ing terminal. Yaiku, yen nulis:

echo "esto es una prueba"

Bakal nuduhake teks ing terminal: iki tes

Nanging bali menyang conto kaping loro iki, aku bakal nuduhake migunani (lan eksekusi) skrip nomer loro iki kanthi sing SANGAT Sederhana 😀…regane 1 + 2?«

Aku menehi kode skrip lengkap kanggo sampeyan:

#!/bin/bash
# -*- ENCODING: UTF-8 -*-
echo "¿Cuánto es 1 + 2?"
read "texto"
if [ "$texto" = "3" ]; then
echo "Correcto"
else
echo "Incorrecto"
fi
exit

Mangkene carane skrip bisa digunakake:

% KODE2%

Uga ... ora bisa ditambahake maneh.

Iki minangka dhasar, ya gampang, nanging aku isih nyoba nerangake kanthi sabisa-bisa, amarga ora kabeh wong duwe jiwa programmer, lan kakehan kudu nggawe skrip kaya iki (utawa padha), muga-muga artikel iki migunani kanggo sampeyan wong liya 🙂

Ana keraguan utawa pitakon, keluhan utawa saran, tinggalake ing kene, aku bakal mangsuli kanthi seneng, mula kita kabeh bakal sinau luwih 😀

regards


26 komentar, tinggalake sampeyan

Ninggalake komentar sampeyan

Panjenengan alamat email ora bisa diterbitake. Perangkat kothak ditandhani karo *

*

*

  1. Tanggung jawab data: Miguel Ángel Gatón
  2. Tujuan data: Kontrol SPAM, manajemen komentar.
  3. Legitimasi: idin sampeyan
  4. Komunikasi data: Data kasebut ora bakal dikomunikasikake karo pihak katelu kajaba kanthi kewajiban ukum.
  5. Panyimpenan data: Database sing dianakake dening Occentus Networks (EU)
  6. Hak: Kapan wae sampeyan bisa matesi, mulihake lan mbusak informasi sampeyan.

  1.   jhals ngandika

    Sampeyan pro !!! * utawa *

    1.    KZKG ^ Gaara ngandika

      Nah kanggo apa-apa 😀
      Yen kasedhiya kanggo sampeyan lan narik kawigaten, aku bakal wareg 😉

      Salam kanca

  2.   suwene ngandika

    @ KZKG ^ Gaara,
    babagan pemrograman bash, aku duwe pitakon:
    Apa bedane wara-wara variabel kaya VAR = hello iki lan wara-wara kaya VAR = $ {VAR: -hello} iki?

    Aku nerangake:
    http://pastebin.com/a3cfWXeD

    salam 😉

    1.    KZKG ^ Gaara ngandika

      Halo 😀
      Aku pancen dudu ahli bash ... sejatine, aku ora ngerti LOL !!
      Nalika dakwartakake variabel kaya mengkene:
      : ${OPTFOLDER:="/opt/"}

      Nanging amarga aku mesthi nindakake kaya iki, aku ora ngerti apa bedane bisa sejatine 🙁

  3.   suwene ngandika

    @ KZKG ^ Gaara
    Aku takon pitakon amarga sing sejatine aku uga ora ngerti, biasane nulis SlackBuilds lan sing sejatine variabel sing dipratelakake kaya ing VAR1 sing akeh ing skrip kasebut. Panelusuran google cepet mbantu aku njlentrehake pitakon iki, aku bareng karo kabeh wong supaya kabeh bisa sinau:

    Skrip:
    http://pastebin.com/faAQb35w

    Panjelasan:
    Ngumumake variabel formulir VAR = $ {VAR: -default_value} tegese variabel VAR bakal njupuk nilai default_value yen lan mung yen regane batal utawa ora ana.

    Tuladha praktis:
    Nalika nglakokake skrip, dijaluk ngetik angka sing bakal disimpen ing variabel VAR, yen ana sing diketik, bakal nuduhake apa sing diketik. Yen ora ngetik apa-apa lan penet enter, kita wara-wara variabel VAR dadi ora, mula nuduhake default_value.

    Greetings.

    1.    KZKG ^ Gaara ngandika

      HAHA kulo mboten ngertos
      Ok, matur nuwun sanget kanca ... iku sing dakkarepake ing pungkasan artikel, aku ora arep mulang apa-apa, mula aku ngerti yen aku bakal sinau anyar ing kene 😀

      Salam lan matur suwun maneh.

      1.    suwene ngandika

        sampeyan bener, ana sing ngerti pirang-pirang perkara ing kene.

        salam lan preinan !! 😀

  4.   Lucas Matthias ngandika

    Apik banget lan jelas banget +1, wektu sampeyan bakal entuk ...
    nanging aku butuh gaweyan 😉

    1.    KZKG ^ Gaara ngandika

      Sejatine aku nulis 80% mung 1 dina, butuh wektu suwe kanggo nerbitake mung amarga internet ora ngidini aku.
      Matur suwun komentarmu 😉

  5.   Hugo ngandika

    Cara liya kanggo nggunakake DNS, amarga kadang jaringan protokol ICMP diblokir:

    (host -ta IP-ADDRESS> / dev / null 2> & 1) && gema "Disambung menyang jaringan"

    Sampeyan uga bakal sok dong mirsani yen ing conto iki, pamriksa nilai bali implisit 😉

    1.    KZKG ^ Gaara ngandika

      Sampeyan minangka kanca biasa, kanthi tips sing durung ngerti babar pisan HAHAHA.
      Matur suwun, komentar dihargai lan hehe ... prekara anyar liyane sing aku sinau 😀

  6.   Tanggal ngandika

    Gracias

    🙂

  7.   Leper_Ivan ngandika

    Sanajan wis pirang-pirang dina wiwit nerbitake topik iki, aku wis akeh bisa digunakake, saiki aku nggawe skrip kanthi bash .. Thanks Gaara ..

  8.   Edgar navarro ngandika

    Dok. Matur nuwun kanggo pitulung sampeyan sing wis jelasake.

    Mung pitakon, kepiye carane supaya yen siji komputer mandheg ping kanthi otomatis, IP bakal ganti. Aku duwe iki.

    kanggo ngganti IP
    #! / bin / bash
    ping -c 10 192.168.1.50 # Yen ora ping kanthi otomatis
    ifconfig eth0 192.168.1.50 netmask 255.255.255.0 siaran 192.168.1.0
    ifconfig eth0 mudhun
    ifconfig eth0 munggah

  9.   Abraham ngandika

    amarga nalika mbandhingake karo yen sampeyan nggunakake tandha pitakon? apa bedane ing antarane? layang liyane

    1.    KZKG ^ Gaara ngandika

      $? tegese 'output utawa output sadurunge', yaiku, yen asil saka prentah sadurunge ... 🙂

      1.    Andres ngandika

        Ana cara liya kanggo entuk asil sing padha, ngirim perintah ping langsung minangka argumen yen:

        yen ping -c 1 IP-ADDRESS; banjur
        kumandhang "Ya wis ana ing jaring"
        liya
        kumandhang "Ora ana ing jaringan"
        fi

        Apa sing kedadeyan yaiku yen ngevaluasi nilai bali saka perintah sing sampeyan kirimake minangka argumen, yen ngasilake 0 iku bener, mula ana sing salah. Kurung kothak padha karo printah tes. Nanging sampeyan bisa nglewati komando apa wae minangka argumen (anggere printah ngasilake sawetara regane).

  10.   regards ngandika

    Halo, kepiye cara nglakokake script.sh karo pangguna X ing skrip sing nggawe pangguna Y, lan pangguna Y terus nglakokake script.sh

    Iki bisa rampung ??

  11.   kuktos ngandika

    Apike, matur nuwun!

  12.   Francisco ngandika

    Thanks kanggo kontribusi, aku wis sejam kanggo ngerti babagan xD, nanging aku ngerti !!!!.

  13.   eloy ngandika

    Skrip kasebut apik. Aritmatika uga bisa ditindakake minangka ($? == 0) yen padha karo nol, ora ana ing jaringan, yen ora ana ing jaringan. Lan yen isih pengin nggawe interaktif luwih cepet, kita bisa ngomong:
    kumandhang -n Ketik IP:
    maca ip
    ping -c 1 $ ip

  14.   Dario ngandika

    Halo, aku pancen anyar babagan iki, aku nyoba nggawe nomer tiket (alphanumeric) kanthi diwaca lan aku pengin yen sing dilebokake duwe format sing bener (ABC-123456) nglakokake printah "x" lan aku ora menehi ora ngerti kepiye, sampeyan bisa nulungi aku?

    kumandhang "Ketik tiket"
    diwaca -p tiket

    yen $ tiket = "ora ana ide (format ABC-123456"); banjur tiket file.txt $ cp; liya gema "format salah, coba maneh"; diwaca -p; fi

    Mesthi nggegirisi lan dheweke ngguyu haha, nanging kaya sing dakkandhakake, aku mung miwiti karo iki.

    Yen aku nerangake kanthi ala, coba dakkandhani lan aku luwih becik nyoba.

    Rangkul kabeh.

  15.   Umberto Y ngandika

    Panjelasan banget, salam

  16.   lincah ngandika

    Aku duwe mangu sethitik karo yen, liya lan liyane.
    Aku pengin script kanggo mriksa sing file ana (salah siji saka log) lan yen ora, kanggo nggawe lan mengko nulis menyang. Nanging yen ana, aku pengin sampeyan nulis.

    Aku duwe:

    tanggal = `tanggal -R`
    #Aku nyoba tanggal variabel, sing ora dianyari antarane wiwitan a
    #proses lan rampung, kadhangkala siji jam bisa liwat lan wektu sing bener ora metu.

    yen [-f /home/user/logs/test.log];
    banjur
    tutul /home/usuario/logs/test.log
    liya
    echo "$ tanggal: Dianyari" >> /home/user/logs/test.log
    gema «———————————————-» >> /home/user/logs/test.log
    fi

    Ing teori mesthine apik, nanging kasunyatane ora dianyari yen file sing dirujuk wis ana

    1.    lincah ngandika

      nuwun sewu, Aku weruh sing ora dikirim lan wis tikel