Portál AbcLinuxu, 29. prosince 2025 15:45
#!/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 ...
#!/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"
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
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á.
to ok!
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.
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…
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.