Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2010-05-22 16:12:58

  buli - Użytkownik

buli
Użytkownik
Skąd: Człuchów
Zarejestrowany: 2006-04-30

Zabezpieczenie skryptu

Witam, jak można zabezpieczyć skrypt przed sytuacją w której bez wpisania żadnego znaku ktoś wciśnie enter?

Czy włączyć logowanie zdarzeń? (T/N):
<enter>
./small_1: line 42: [: =: unary operator expected
./small_1: line 51: [: =: unary operator expected

Kod:

echo "Czy włączyć logowanie zdarzeń? (T/N):";
read LOG;
if [ $LOG ]
    then
    while [ ! $LOG = "T" ] && [ ! $LOG = "N" ]
    do
        echo "Czy włączyć logowanie zdarzeń? (T/N):";
        read LOG;
    done
fi

Ostatnio edytowany przez buli (2010-05-22 16:57:24)


blehh :F

Offline

 

#2  2010-05-22 17:27:01

  urbinek - Użytkownik

urbinek
Użytkownik
Skąd: Sosnowiec
Zarejestrowany: 2009-10-01
Serwis

Re: Zabezpieczenie skryptu

nie mam basha pod ręką ale chyba

Kod:

if [ $LOG!='' ]

ale lepiej na while zrobić

P.S.
http://ultra.ap.krakow.pl/~bar/kursbasha/main.html


A w wolnym czasie, robię noże :)
[img]http://nginx.urbinek.eu/_photos/signature.png[/img]

Offline

 

#3  2010-05-22 17:48:22

  buli - Użytkownik

buli
Użytkownik
Skąd: Człuchów
Zarejestrowany: 2006-04-30

Re: Zabezpieczenie skryptu

Sprawdzalem to zanim napisalem posta..
Czy włączyć logowanie zdarzeń? (T/N):

./small_1: line 42: [: =: unary operator expected
./small_1: line 52: [: =: unary operator expected

Kod:

echo "Czy włączyć logowanie zdarzeń? (T/N):";
read LOG;
if [ $LOG ]
    then
    while [ ! $LOG = "T" ] && [ ! $LOG = "N" ] && [ $LOG = '' ]
    do
        echo "Czy włączyć logowanie zdarzeń? (T/N):";
        read LOG;
    done
fi

blehh :F

Offline

 

#4  2010-05-22 17:56:01

  winnetou - złodziej wirków ]:->

winnetou
złodziej wirków ]:->
Skąd: Jasło/Rzeszów kiedyś Gdańs
Zarejestrowany: 2008-03-31
Serwis

Re: Zabezpieczenie skryptu

daj if'a i while'a w podwójny nawias [[ ]]


LRU: #472938
[b]napisz do mnie:[/b] ola@mojmail.eu
[url=http://valhalla.org.pl]Hołmpejdż[/url] | [url=http://valhalla.org.pl/foto]Galerie[/url] | [url=http://valhalla.org.pl/tech]"Twórczość"[/url] || [url=http://img.munn.in]Free Image Hosting[/url]

Offline

 

#5  2010-05-22 18:27:57

  pyrion - Użytkownik

pyrion
Użytkownik
Zarejestrowany: 2005-10-14

Re: Zabezpieczenie skryptu

Wykorzystaj [url=http://www.dief.republika.pl/case.html]instrukcję case[/url] zamiast if.

Ostatnio edytowany przez pyrion (2010-05-22 18:28:33)

Offline

 

#6  2010-05-22 19:05:49

  buli - Użytkownik

buli
Użytkownik
Skąd: Człuchów
Zarejestrowany: 2006-04-30

Re: Zabezpieczenie skryptu

jak bym chciał użyć case to bym go użył.. :)
Mogę prosić o przykład o co chodzi z tymi nawiasami?
Bo coś tam próbowałem i chyba nie do końca kumam..


blehh :F

Offline

 

#7  2010-05-22 19:20:59

  winnetou - złodziej wirków ]:->

winnetou
złodziej wirków ]:->
Skąd: Jasło/Rzeszów kiedyś Gdańs
Zarejestrowany: 2008-03-31
Serwis

Re: Zabezpieczenie skryptu

Kod:

echo "Czy włączyć logowanie zdarzeń? (T/N):";
read LOG;
if [[ "$LOG" ]]
    then
    while [[ "$LOG" != "T" ]] && [[ "$LOG" != "N" ]] && [[ "$LOG" = '' ]]
    do
        echo "Czy włączyć logowanie zdarzeń? (T/N):";
        read LOG;
    done
fi

Nie jestem pewien dlaczego tak to działa ale u mnie też czasami skrypty się nie chcą uruchomić jak dam warunek w pojedynczym [s]cudzysłowie[/s] nawiasie. Ponadto zmienne weź w cudzysłów

Ostatnio edytowany przez winnetou (2010-05-22 19:36:13)


LRU: #472938
[b]napisz do mnie:[/b] ola@mojmail.eu
[url=http://valhalla.org.pl]Hołmpejdż[/url] | [url=http://valhalla.org.pl/foto]Galerie[/url] | [url=http://valhalla.org.pl/tech]"Twórczość"[/url] || [url=http://img.munn.in]Free Image Hosting[/url]

Offline

 

#8  2010-05-22 19:30:34

  azhag - Admin łajza

azhag
Admin łajza
Skąd: Warszawa
Zarejestrowany: 2005-11-15

Re: Zabezpieczenie skryptu

lepiej ustaw domyślny [tt]$LOG[/tt] jeśli pusty:

Kod:

LOG=${LOG:-N}

to oznacza: [tt]$LOG[/tt] = [tt]$LOG[/tt] lub, jeśli ta zmienna jest pusta, "[tt]N[/tt]".

Podwójne nawiasy kwadratowe to bashyzm.


Błogosławieni, którzy czynią FAQ.
[url=http://www.opencaching.pl]opencaching[/url] :: [url=http://dug.net.pl/sources.list]debian sources.list[/url] :: [url=http://www.linuxportal.pl/blogi/azhag/wpisy]coś jakby blog[/url] :: [url=http://dug.net.pl/]polski portal debiana[/url] :: linux user #403712

Offline

 

#9  2010-05-22 20:03:56

  buli - Użytkownik

buli
Użytkownik
Skąd: Człuchów
Zarejestrowany: 2006-04-30

Re: Zabezpieczenie skryptu

dodatkowo nie pomagaja..
azhag, co oznacza taki zapis w klamrach..?
w stosunku do głupiego LOG='N'

Ostatnio edytowany przez buli (2010-05-22 20:05:43)


blehh :F

Offline

 

#10  2010-05-22 20:29:15

  azhag - Admin łajza

azhag
Admin łajza
Skąd: Warszawa
Zarejestrowany: 2005-11-15

Re: Zabezpieczenie skryptu

Kod:

LOG='N'

[b]zawsze[/b] ustawia N jako $LOG

Moje robi to co napisałem.

Porównaj:

Kod:

echo $FOO
BAR=${FOO:-domyślne}
echo $BAR
FOO=foo
BAR=${FOO:-domyślne}
echo $BAR

Błogosławieni, którzy czynią FAQ.
[url=http://www.opencaching.pl]opencaching[/url] :: [url=http://dug.net.pl/sources.list]debian sources.list[/url] :: [url=http://www.linuxportal.pl/blogi/azhag/wpisy]coś jakby blog[/url] :: [url=http://dug.net.pl/]polski portal debiana[/url] :: linux user #403712

Offline

 

#11  2010-05-23 02:26:15

  buli - Użytkownik

buli
Użytkownik
Skąd: Człuchów
Zarejestrowany: 2006-04-30

Re: Zabezpieczenie skryptu

A no kumam już. Ale mimo wszystko zwraca błąd w przypadku pustej zmiennej..

./small_1: line 44: [: =: unary operator expected
./small_1: line 54: [: =: unary operator expected

Problem byl w tym ze
domyslna zmienna musiala pojawic sie po

Kod:

if [ $LOG ]
    then
    while [ ! $LOG = "T" ] && [ ! $LOG = "N" ]
    do
        echo "Czy włączyć logowanie zdarzeń? (T/N):";
        read LOG;
    done
fi

Ostatnio edytowany przez buli (2010-05-23 02:53:10)


blehh :F

Offline

 

#12  2010-05-23 07:59:48

  winnetou - złodziej wirków ]:->

winnetou
złodziej wirków ]:->
Skąd: Jasło/Rzeszów kiedyś Gdańs
Zarejestrowany: 2008-03-31
Serwis

Re: Zabezpieczenie skryptu

A spróbuj tak:

Kod:

while [ "$LOG" != "T" ] && [ "$LOG" != "N" ]

A najlepiej przedstaw większy kawałek skryptu z linijkami 44 i 54  ;))


LRU: #472938
[b]napisz do mnie:[/b] ola@mojmail.eu
[url=http://valhalla.org.pl]Hołmpejdż[/url] | [url=http://valhalla.org.pl/foto]Galerie[/url] | [url=http://valhalla.org.pl/tech]"Twórczość"[/url] || [url=http://img.munn.in]Free Image Hosting[/url]

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
To nie jest tylko forum, to nasza mała ojczyzna ;-)

[ Generated in 0.017 seconds, 11 queries executed ]

Informacje debugowania

Time (s) Query
0.00016 SET CHARSET latin2
0.00007 SET NAMES latin2
0.00195 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.144.33.41' WHERE u.id=1
0.00100 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.144.33.41', 1714277098)
0.00076 SELECT * FROM punbb_online WHERE logged<1714276798
0.00130 DELETE FROM punbb_online WHERE ident='18.218.254.122'
0.00097 DELETE FROM punbb_online WHERE ident='52.167.144.220'
0.00155 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=16899 AND t.moved_to IS NULL
0.00029 SELECT search_for, replace_with FROM punbb_censoring
0.00220 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=16899 ORDER BY p.id LIMIT 0,25
0.00198 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=16899
Total query time: 0.01223 s