Sada je: 28 ožu 2024, 09:24.
C, C++, Java, PHP, Ruby...

Moderator/ica: Moderatori/ce

Pravila foruma
U naslovu teme unutar uglatih zagrada navesti o kojem jeziku je riječ. Primjer: [Java]
Radim skripti koja bi služila za uključivanje pcscd.service na Arch Linuxu i ovo je što sam do sada kodirao

Kod: Označi sve
#!/bin/bash
HEIGHT=15
WIDTH=50
CHOICE_HEIGHT=4
BACKTITLE="UKLJUCI ILI ISKLJUCI CITAC PAMETNIH KARTICA"
TITLE="Citac kartica"
MENU="Odaberi:"

OPTIONS=(1 "Ukljuci"
         2 "Iskljuci"
         3 "Instaliraj potrebne pakete (Arch Linux)"
         4 "Skeniraj citac i karticu (Arch Linux)")

CHOICE=$(dialog --clear \
                --backtitle "$BACKTITLE" \
                --title "$TITLE" \
                --cancel-label "PREKID" \
                --menu "$MENU" \
                $HEIGHT $WIDTH $CHOICE_HEIGHT \
                "${OPTIONS[@]}" \
                2>&1 >/dev/tty)

clear
case $CHOICE in
        1)
            systemctl start pcscd.service
            ;;
        2)
            systemctl stop pcscd.service
            ;;
        3)
            sudo pacman -S ccid opensc pcsc-tools
            ;;
        4)
            pcsc_scan
            ;;
esac


Skripta radi super, ali želio bih još dodati da mi se nakon svake izvršene naredbe ponovo pokaže dialog, a ne da mi ugasi cijelu skriptu. Ono što sam našao do sad je da upotrijebim petlju, ali, s obzirom da se ne razumijem puno u Bash, svaki put kad unesem promjene u skriptu pokvarim je do te mjere da ne radi više pa molim za pomoć na materinjem jeziku :-D

Bonus stvar (koja može, ali nije toliko bitna) je da li je moguće odmah na početku skripte dobiti da se unese lozinka pa da ju više ne treba unositi (i da ju odmah testira je li dobra ili nije da ne bi kasnije u skripti bilo problema?

P.S. S obzirom da sam prije već imao temu o Bash-u, ako admini i moderatorit misle da bi bilo dobro da ovo i ono bude jedna tema sa jedinstvenim nazivom onda molim da ih spojite.
Linux za srce i dušu.

GitHub
Twitch
YouTube
Avatar
Postovi: 42
Postovi: 42
Pridružen/a: 09 ožu 2020, 19:12
Lokacija: Zagreb
Podijelio/la zahvalu: 2 puta
Primio/la zahvalu: 1 puta
Spol: M
Nisam ti pregleda cilu skriptu jer čitam ovo na mobu, ali ovo prvo, da se ne ugasi nego da se ponovo pokaže izbornik je vrlo jednostavno riješiti koristeći funkcije.

Tipa:
Kod: Označi sve
KRENI () { # ime funkcije
neki niz
naredbi
if [ $? = 0 ]; then
 KRENI # po završetku pozovi samu sebe
fi
}
KRENI # pozovi funkciju



Za unos lozinke na početku i da te dalje ne pita isto:
Kod: Označi sve
LOZINKA=`zenity --entry --hide-text --text "Upiši lozinku korisnika $(whoami)"

a dalje samo pozivaš/provjeriš dal' je varijabla $LOZINKA prazna ili ne.

Inače, lozinku sudo naredbi prosljeđuješ ovako:
Kod: Označi sve
echo "$LOZINKA" | sudo -S naredba-koja-traži-sudo


Možeš napraviti i dvi varijable, npr. LOZINKA1 i LOZINKA2 te ih usporediti jesu li iste pa da znaš dal' si je dobro natipkao.
Test ispravnosti lozinke možeš provjeriti tako da pozoveš bilo koju naredbu uz sudo, npr. sudo echo " " > /tmp/test
Ako ti $? nije 0, lozinka je neispravna.

Eto, nadam se da sam ti bar malo pomogao. :-)
Arch Linux Install Script (zastarjela verzija)
Vl@do je napisao/la:Arch imaš upravo zato da uštediš na vremenu. Nemaš nikakvih problema s instalacijama, kompajliranjem i ostalim. Imaš jednostavno funkcionalan i stabilan, uvijek najsvježiji OS, a osim toga je sexy i cool do neba.

I've seen some idiots back in my time, but you man... you're special!
Avatar
Moderator
Postovi: 6725
Moderator
Postovi: 6725
Pridružen/a: 13 stu 2010, 21:12
Lokacija: /hrvatska/solin/.../4
Podijelio/la zahvalu: 338 puta
Primio/la zahvalu: 406 puta
Spol: M
OS: Arch Linux KDE
Super :-D Hvala na odgovoru.

Ovaj dio o vraćanju na dialog mi je pomogao. Unos lozinke mi ne radi, ali valjda nisam dobro shvatio.

Jedino što sad u cijeloj skripti mi cancel label ne gasi terminal nego mi ponovo vraća skriptu (naravno). Ima li način da se samo za tu naredbu (znači "cancel label") napravi iznimka pa da gasi skriptu i terminal?
Linux za srce i dušu.

GitHub
Twitch
YouTube
Avatar
Postovi: 42
Postovi: 42
Pridružen/a: 09 ožu 2020, 19:12
Lokacija: Zagreb
Podijelio/la zahvalu: 2 puta
Primio/la zahvalu: 1 puta
Spol: M
Nisam siguran kako radi dialog, zenity je puno jednostavniji. Ako imaš podignut display server (x ili wayland), koristi zenity dialoge, bolje izgledaju i lakše ih podesiš. ;)

Ako želiš da ti tipka cancel ugasi skriptu, napraviš if;

if [ $? != 0 ]; then
exit $?
else
napravi nešto drugo
fi

I to je to.
Arch Linux Install Script (zastarjela verzija)
Vl@do je napisao/la:Arch imaš upravo zato da uštediš na vremenu. Nemaš nikakvih problema s instalacijama, kompajliranjem i ostalim. Imaš jednostavno funkcionalan i stabilan, uvijek najsvježiji OS, a osim toga je sexy i cool do neba.

I've seen some idiots back in my time, but you man... you're special!
Avatar
Moderator
Postovi: 6725
Moderator
Postovi: 6725
Pridružen/a: 13 stu 2010, 21:12
Lokacija: /hrvatska/solin/.../4
Podijelio/la zahvalu: 338 puta
Primio/la zahvalu: 406 puta
Spol: M
OS: Arch Linux KDE

Na mreži
Trenutno korisnika/ca: / i 6 gostiju.