Portál AbcLinuxu, 4. května 2025 12:32
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 0update: fixed router name
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.