bin noch recht neu mit Linux unterwegs und hab beim entwickeln eines Script ein kleines Problem.
Folgender Befehl bei direkteter Eingabe auf einem Zielsystem:
Code: Alles auswählen
sed -i.tor 's/ipt6or4 -A 2outp -p tcp -o eth0 -d $i --dport 383 -j ACCEPT/&\nipt6or4 -A 2inp -p udp -i eth0 -s $i --dport 161 -j ACCEPT\nipt6or4 -A 2outp -p udp -o eth0 -d $i --sport 161 -j ACCEPT\nipt6or4 -A 2outp -p udp -o eth0 -d $i --dport 162 -j ACCEPT/'" /etc/init.d/iptables
Als nächstes soll dieser Befehl *passwortlos* auf einem Zielrechner ausgeführt werden.(add_snmp_to_iptables.sh)
Code: Alles auswählen
hostname=( host1 host2 )
password=123
COMMAND="sed -i.tor 's/ipt6or4 -A 2outp -p tcp -o eth0 -d $i --dport 383 -j ACCEPT/&\nipt6or4 -A 2inp -p udp -i eth0 -s $i --dport 161 -j ACCEPT\nipt6or4 -A 2outp -p udp -o eth0 -d $i --sport 161 -j ACCEPT\nipt6or4 -A 2outp -p udp -o eth0 -d $i --dport 162 -j ACCEPT/' /etc/init.d/iptables.sla"
for name in ${hostname[@]}
do
echo +++ changing iptables rules on $name +++
# other stuff on $name
expect -c "
#exp_internal 1 # uncomment for debugging
spawn ssh2 root@$name $COMMAND
expect {
"*password:*" { send $password\r\n; interact; send}
eof { exit }
}
exit
"
wait
done
Habe schon zig Varianten durch, aber ich bekomm es einfach nicht hin
Jemand Denkanstösse oder Lösungen?