Portál AbcLinuxu, 10. května 2025 11:21

Dotaz: nejede script

23.8.2007 14:28 Sir Mikhail | skóre: 10
nejede script
Přečteno: 365×
Odpovědět | Admin
Zdravim, mam problem se skriptem nastavujicim iptables, OS Arch LInux.

takze:
#!/bin/bash
iptables=`which iptables`
#
reset() {
 $iptables -X
 $iptables -F INPUT
 $iptables -F OUTPUT
 $iptables -F FORWARD
}
.... atd.
problem je, ze kdyz spustim sh firewall.sh tak to ohlasi
`irewall.sh: line 4: syntax error near unexpected token `{
`irewall.sh: line 5: `reset() {
nekde jsem cetl, ze za to muze moct windowsacky zpusob ukoncovani radku, ale prebootoval jsem do linuxu a ulozil jsem to znovu tam a nepomohlo to .... Help?

PS: Tohle jsem jeste nedelal, kamos mi poslal svuj skript, poupraviljsem si ho pro svoje potreby. Sam jsem skript krome rc.local nepotreboval ...
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

23.8.2007 14:40 n
Rozbalit Rozbalit vše Re: nejede script
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zkousel jsi tu slozenou zavorku dat na samostatnej radek? A rozhodne bych nenazyval promennou stejne jako program.
23.8.2007 14:49 Sir Mikhail | skóre: 10
Rozbalit Rozbalit vše Re: nejede script
Diky za odpoved! Bohuzel, to nepomohlo:
#!/bin/bash

firewall=`which iptables`

reset() 
{
 $firewall -X
 $firewall -F INPUT
 $firewall -F OUTPUT
 $firewall -F FORWARD
}

start() {
# DEFAULTNE VSE ZAHAZUJEM
 $firewall -P INPUT DROP
 $firewall -P OUTPUT ACCEPT
 $firewall -P FORWARD ACCEPT
... atd.
odpoved:
[root@localhost samba]# sh ipt.sh
: command not found
: command not found
'pt.sh: line 5: syntax error near unexpected token `
'pt.sh: line 5: `reset()

BTW v tom puvodnim prispevku melo byt v obou pripadech "line 4"
23.8.2007 14:58 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: nejede script

Je to skutečně obrácený apostrof, není to nějaký unicodový ekvivalent typu "left single quote"? Když bude nejhůř, použijte '$(...)'.

Mimochodem, to mazání provádíte dost nešťastně. Pokud se budete na uživatelský řetězec odkazovat z nějakého pravidla ve standardním (a to nejspíš budete), dojde při 'iptables -X' k chybě. Lepší by bylo

  iptables -F
  iptables -X
23.8.2007 14:53 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: nejede script

Já jsem hlavně nikdy nepochopil, k čemu má být dobrá ta proměnná (leda že by to bylo tak, že to tam všichni v příkladech píší, tak to od nich všichni opisují - asi jako aktivaci RP filtru). Zejména kombinace

  iptables=`which iptables`
  $iptables -X

mi připadá docela uhozená.

23.8.2007 14:54 R
Rozbalit Rozbalit vše Re: nejede script
Odpovědět | | Sbalit | Link | Blokovat | Admin
A zmenil si pri ukladani typ newline?
23.8.2007 15:16 Sir Mikhail | skóre: 10
Rozbalit Rozbalit vše Re: nejede script
Pouzil jsem Jedit a jede :-) to ok! :-)
23.8.2007 15:05 ams
Rozbalit Rozbalit vše Re: nejede script
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ano, muze za to windowsacky zpusob ukonceni radku. Napiste tr -d '\r' < vas_skript.sh > novy_nazev.sh. Zavadeni nove promenne pomoci iptables=`which iptables` je opravdu zbytecne. Potrebujete tam uvest celou cestu k tomu programu (z bezpecnostnich duvodu). Neco jako iptables=/usr/sbin/iptables.
23.8.2007 15:10 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: nejede script
Potrebujete tam uvest celou cestu k tomu programu (z bezpecnostnich duvodu). Neco jako iptables=/usr/sbin/iptables.

Z jakých bezpečnostních důvodů? Pokud je útočník schopen rootovi změnit hodnotu proměnné PATH, pak to, že se v tomto konkrétním skriptu zavolá špatný iptables, už je celkem zanedbatelná drobnost…

23.8.2007 15:11 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: nejede script
Nemluvě o tom, že pro takové případy je daleko jednodušší a praktičtější si tu cestu na začátku skriptu nastavit.
23.8.2007 15:42 ams
Rozbalit Rozbalit vše Re: nejede script
Nemel jsem na mysli utok hackera ale prave spatne nastaveny PATH. Osobne vidim vyhodu ve zkracenem nazvu, pokud pouziji promennou IT=/usr/sbin/iptables.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.