Portál AbcLinuxu, 15. prosince 2025 21:17
Nákup routera som nejak neriešil. Proste chcel som len takú tú "krabičku", čo nastavíš a viac sa nestaráš. Kamoš odporučil Canyon CNP-WF514 AP. Router funkciami stačí dodnes, no trpí jedným ťažko odpustiteľným neduhom.
A totiž takým, že aj po krátkom výpadku el. energie tak nejak zabudne nastavenia rezervácie MAC adries a forwardovania portov. No a vzhľadom na fakt, že týchto položiek mám nakonfigurovaných dosť a že už ma dosť vytáčalo dokolečka to nastavovať (nie, že by sme mali tak nestabilnú elektriku, ale už som párkrát router musel pri jeho vytuhnutí na chvíľku odpojiť sám), tak som si urobil takýto jednoduchý skriptík.
Možno sa bude niekomu hodiť.
#!/bin/bash
#####################################################
# sets up Canyon CN-WF514 router #
#####################################################
# variable definition
host=router
user=guest
password=heslo
def_password=standardne_heslo
# host_mac_address = your client's mac address? prolly unimportant (find out via sniffing)
host_mac_address=00-01-11-11-11-11
# dhcp address range for clients
dhcp_start=100
dhcp_end=110
# before running the script:
# - configure WAN
######################################################
# let's check if we have the password set or we're using
# the default one + change the default
wget --output-document=- --user=${user} --password=${def_password} http://${host} &>/dev/null
if [ $? -eq 0 ]; then
# we're using default password
# this is not safe so let's change it
wget --output-document=- --user=${user} --password=${def_password} --post-data="password1=${pass
word}&password2=${password}&apply_pass=+Apply+" http://${host}/UserPassSet.cgi
sleep 2
else
wget --output-document=- --user=${user} --password=${password} http://${host} &>/dev/null
if [ $? -ne 0 ]; then
echo "wrong (unknown) password, exiting.."
exit 1
fi
fi
# let's set dhcp range
wget --output-document=- --user=${user} --password=${password} --post-data="lan_ip_address=192.168.1.1&lan_sub_mask=255.255.255.0&dhcp_server_on=on&dhcp_start_ip2=${dhcp_start}&dhcp_end_ip2=${dhcp_end}&dhcp_server_start_ip=192.168.1.${dhcp_start}&dhcp_server_end_ip=192.168.1.${dhcp_end}&dhcp_server_start_ip_prev=192.168.1.&dhcp_server_end_ip_prev=192.168.1.&apply_pass=+Apply+&dhcp_on=1" http://${host}/lan_setup.cgi
# NAT config
# 6 - TCP
# 17 - UDP
# max. of 16 entries accepted
# delete all entries first
wget --output-document=- --user=guest --password=${password} http://router/virtual.htm 2>/dev/null | sed -n '/del_list_item/s/.*del_list_item('\''\([^'\'']*\).*/\1/p' | while read -r i; do
wget --output-document=- --user=guest --password=${password} --post-data="virtual_del_rulename=${i}" http://router/virtual_service_list_del.cgi
done
# and populate new ones
(cat << EOF
ssh104 104 6 5522 22
wakeonlan105 105 17 105 9
# this line's ignored
EOF
) | grep -v ^# | while read -r rule_name virtual_ip_addr proto_select port_ext_a port_int_a
do
wget --output-document=- --user=${user} --password=${password} --post-data="rule_name=${rule_name}&virtual_ip_addr=${virtual_ip_addr}&proto_select=${proto_select}&port_ext_a=${port_ext_a}&port_int_a=${port_int_a}&virtual_ip2=192.168.1.&virtual_ip=192.168.1.${virtual_ip_addr}&virtual_add=++Add++" http://${host}/virtual_service_add.cgi
done
# DHCP reservations
(cat << EOF
00-00-00-00-00-00 104
11-11-11-11-11-11 105
EOF
) | while read lan_mac_address lan_ip_adds
do
wget --output-document=- --user=${user} --password=${password} --post-data="lan_mac_address=${lan_mac_address}&host_mac_address=${host_mac_address}&lan_ip_adds=${lan_ip_adds}&lan_ip_addre=192.168.1.&lanipaddre=192.168.1.${lan_ip_adds}&host_ip_address=&add_dhcp_entry=++Add++" http://${host}/dhcp_ip_reserving_add.cgi
done
# save changes
wget --output-document=- --user=${user} --password=${password} http://${host}/save.htm
exit 0
update: fixed router name
Tiskni
Sdílej:
http://www.canyon-tech.com/archive/connectivity/wireless/CN-WF514#pr-switcher
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.