<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[Forums - All Forums]]></title>
		<link>http://bluedevil.ca/forum/</link>
		<description><![CDATA[Forums - http://bluedevil.ca/forum]]></description>
		<pubDate>Fri, 18 May 2012 22:57:40 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[ipv6 bind config]]></title>
			<link>http://bluedevil.ca/forum/showthread.php?tid=22</link>
			<pubDate>Mon, 23 Jan 2012 22:29:22 -0700</pubDate>
			<guid isPermaLink="false">http://bluedevil.ca/forum/showthread.php?tid=22</guid>
			<description><![CDATA[; bind config:<br />
zone "e.f.a.c.7.0.6.2.ip6.arpa" {<br />
    type master;<br />
    file "zones/reverse/e.f.a.c.7.0.6.2.ip6.arpa.dns";<br />
}<br />
<br />
; Delegates 2607:cafe::/48 to dns1.customer.com and dns2.customer.com<br />
<br />
; zone file:<br />
&#36;TTL 1d<br />
@       IN      SOA     isp.com.        helpdesk.isp.com. (<br />
        2012012300      ; serial<br />
        1h              ; refresh 1hour<br />
        15m             ; retry 15m<br />
        30d             ; Expire<br />
        10m )           ; negative caching<br />
<br />
        IN      NS      dns01.isp.com.<br />
        IN      NS      dns02.isp.com.<br />
<br />
2.0.0.0 IN      NS      dns1.customer.com.<br />
        IN      NS      dns2.customer.com.]]></description>
			<content:encoded><![CDATA[; bind config:<br />
zone "e.f.a.c.7.0.6.2.ip6.arpa" {<br />
    type master;<br />
    file "zones/reverse/e.f.a.c.7.0.6.2.ip6.arpa.dns";<br />
}<br />
<br />
; Delegates 2607:cafe::/48 to dns1.customer.com and dns2.customer.com<br />
<br />
; zone file:<br />
&#36;TTL 1d<br />
@       IN      SOA     isp.com.        helpdesk.isp.com. (<br />
        2012012300      ; serial<br />
        1h              ; refresh 1hour<br />
        15m             ; retry 15m<br />
        30d             ; Expire<br />
        10m )           ; negative caching<br />
<br />
        IN      NS      dns01.isp.com.<br />
        IN      NS      dns02.isp.com.<br />
<br />
2.0.0.0 IN      NS      dns1.customer.com.<br />
        IN      NS      dns2.customer.com.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[My 851w home router config]]></title>
			<link>http://bluedevil.ca/forum/showthread.php?tid=12</link>
			<pubDate>Tue, 29 Jun 2010 11:48:49 -0600</pubDate>
			<guid isPermaLink="false">http://bluedevil.ca/forum/showthread.php?tid=12</guid>
			<description><![CDATA[Now with WPA2!!<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>!<br />
! Last configuration change at 10:10:29 MST Tue Jun 29 2010 by rbaxter<br />
! NVRAM config last updated at 10:10:30 MST Tue Jun 29 2010 by rbaxter<br />
!<br />
version 12.4<br />
no service pad<br />
service tcp-keepalives-in<br />
service tcp-keepalives-out<br />
service timestamps debug datetime msec localtime show-timezone<br />
service timestamps log datetime msec localtime show-timezone<br />
service password-encryption<br />
service sequence-numbers<br />
!<br />
hostname 851baxterit<br />
!<br />
boot-start-marker<br />
boot-end-marker<br />
!<br />
logging buffered 4096<br />
enable secret xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br />
!<br />
aaa new-model<br />
!<br />
!<br />
aaa group server radius rad_mac<br />
!<br />
aaa group server radius rad_acct<br />
!<br />
aaa group server radius rad_admin<br />
!<br />
aaa group server tacacs+ tac_admin<br />
!<br />
aaa group server radius rad_pmip<br />
!<br />
aaa group server radius dummy<br />
!<br />
aaa group server radius rad_eap<br />
 server 10.10.10.1 auth-port 1645 acct-port 1646<br />
!<br />
aaa authentication login local_authen local<br />
aaa authentication login eap_methods group rad_eap<br />
aaa authentication login mac_methods local<br />
aaa authorization exec local_author local <br />
aaa authorization ipmobile default group rad_pmip <br />
aaa accounting network acct_methods start-stop group rad_acct<br />
!<br />
!<br />
aaa session-id common<br />
clock timezone MST -7<br />
!<br />
crypto pki trustpoint TP-self-signed-3527475230<br />
 enrollment selfsigned<br />
 subject-name cn=IOS-Self-Signed-Certificate-3527475230<br />
 revocation-check none<br />
 rsakeypair TP-self-signed-3527475230<br />
!<br />
!<br />
crypto pki certificate chain TP-self-signed-3527475230<br />
 certificate self-signed 01<br />
umm no<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;quit<br />
dot11 syslog<br />
!<br />
dot11 ssid baxterIT<br />
&nbsp;&nbsp; vlan 1<br />
&nbsp;&nbsp; authentication open <br />
&nbsp;&nbsp; authentication key-management wpa<br />
&nbsp;&nbsp; wpa-psk ascii 7 xxxxxxxxxxxxxxxxxxxxxxxx<br />
!<br />
no ip source-route<br />
no ip dhcp use vrf connected<br />
!<br />
ip dhcp pool sdm-pool<br />
&nbsp;&nbsp; import all<br />
&nbsp;&nbsp; network 10.10.10.0 255.255.255.0<br />
&nbsp;&nbsp; default-router 10.10.10.1 <br />
&nbsp;&nbsp; domain-name baxterit.net<br />
&nbsp;&nbsp; dns-server 129.128.5.233 129.128.76.233 <br />
!<br />
!<br />
ip cef<br />
no ip bootp server<br />
no ip domain lookup<br />
ip domain name baxterit.net<br />
!<br />
parameter-map type regex sdm-regex-nonascii<br />
 pattern [^&#92;x00-&#92;x80]<br />
<br />
!<br />
!<br />
!<br />
spanning-tree portfast bpduguard<br />
username rbaxter privilege 15 secret 5 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br />
! <br />
!<br />
archive<br />
 log config<br />
&nbsp;&nbsp;hidekeys<br />
!<br />
!<br />
ip tcp synwait-time 10<br />
!<br />
bridge irb<br />
!<br />
!<br />
interface Tunnel0<br />
 description Hurricane Electric IPv6 Tunnel Broker<br />
 no ip address<br />
 tunnel source 96.51.7.208<br />
 tunnel destination 216.218.226.238<br />
!<br />
interface FastEthernet0<br />
 description Linksys SD2008<br />
!<br />
interface FastEthernet1<br />
 description Popcorn Hour<br />
 spanning-tree portfast<br />
!<br />
interface FastEthernet2<br />
 description Unused<br />
 spanning-tree portfast<br />
!<br />
interface FastEthernet3<br />
 description Unused<br />
 spanning-tree portfast<br />
!<br />
interface FastEthernet4<br />
 description Telus<br />
 ip dhcp client update dns<br />
 ip address dhcp hostname gw.baxterit.net<br />
 ip nat outside<br />
 ip virtual-reassembly<br />
 duplex auto<br />
 speed auto<br />
!<br />
interface Dot11Radio0<br />
 description Wireless<br />
 no ip address<br />
 no ip redirects<br />
 no ip unreachables<br />
 no ip proxy-arp<br />
 ip flow ingress<br />
 ip flow egress<br />
 no ip route-cache cef<br />
 ip route-cache flow<br />
 beacon period 20<br />
 beacon dtim-period 1<br />
 !<br />
 encryption vlan 1 mode ciphers aes-ccm <br />
 !<br />
 ssid baxterIT<br />
 !<br />
 speed basic-36.0 basic-48.0 basic-54.0<br />
 station-role root<br />
 world-mode dot11d country CA both<br />
 no cdp enable<br />
 bridge-group 1<br />
 bridge-group 1 subscriber-loop-control<br />
 bridge-group 1 spanning-disabled<br />
 bridge-group 1 block-unknown-source<br />
 no bridge-group 1 source-learning<br />
 no bridge-group 1 unicast-flooding<br />
!<br />
interface Dot11Radio0.1<br />
 encapsulation dot1Q 1 native<br />
 no cdp enable<br />
 bridge-group 1<br />
 bridge-group 1 subscriber-loop-control<br />
 bridge-group 1 block-unknown-source<br />
 no bridge-group 1 source-learning<br />
 no bridge-group 1 unicast-flooding<br />
!<br />
interface Vlan1<br />
 description default<br />
 no ip address<br />
 ip tcp adjust-mss 1452<br />
 bridge-group 1<br />
!<br />
interface BVI1<br />
 description &#36;ES_LAN&#36;<br />
 ip address 10.10.10.1 255.255.255.0<br />
 ip nat inside<br />
 ip virtual-reassembly<br />
!<br />
ip forward-protocol nd<br />
ip route 67.10.232.0 255.255.255.0 Null0<br />
ip route 72.51.48.0 255.255.255.0 Null0<br />
!<br />
ip http server<br />
ip http access-class 3<br />
ip http authentication local<br />
ip http secure-server<br />
ip http timeout-policy idle 60 life 86400 requests 10000<br />
ip nat inside source list 1 interface FastEthernet4 overload<br />
ip nat inside source static tcp 10.10.10.4 22 174.0.147.140 22 extendable<br />
ip nat inside source static tcp 10.10.10.4 53 174.0.147.140 53 extendable<br />
ip nat inside source static udp 10.10.10.4 53 174.0.147.140 53 extendable<br />
ip nat inside source static tcp 10.10.10.4 2086 174.0.147.140 2086 extendable<br />
ip nat inside source static tcp 10.10.10.4 2087 174.0.147.140 2087 extendable<br />
ip nat inside source static udp 10.10.10.1 161 174.0.147.140 9161 extendable<br />
ip nat inside source static tcp 10.10.10.4 10161 174.0.147.140 10161 extendable<br />
ip nat inside source static udp 10.10.10.4 10161 174.0.147.140 10161 extendable<br />
!<br />
ip access-list extended SDM_HTTPS<br />
 remark SDM_ACL Category=1<br />
 permit tcp any any eq 443<br />
ip access-list extended SDM_SHELL<br />
 remark SDM_ACL Category=1<br />
 permit tcp any any eq cmd<br />
ip access-list extended SDM_SSH<br />
 remark SDM_ACL Category=1<br />
 permit tcp any any eq 22<br />
!<br />
access-list 1 remark SDM_ACL Category=3<br />
access-list 1 permit 10.10.10.0 0.0.0.255<br />
access-list 2 remark HTTP Access-class list<br />
access-list 2 remark SDM_ACL Category=1<br />
access-list 2 permit 10.10.10.0 0.0.0.7<br />
access-list 2 deny&nbsp;&nbsp; any<br />
access-list 3 remark HTTP Access-class list<br />
access-list 3 remark SDM_ACL Category=1<br />
access-list 3 permit 10.10.10.0 0.0.0.7<br />
access-list 3 deny&nbsp;&nbsp; any<br />
access-list 102 remark VTY Access-class list<br />
access-list 102 remark SDM_ACL Category=1<br />
access-list 102 permit ip 10.10.10.0 0.0.0.7 any<br />
access-list 102 deny&nbsp;&nbsp; ip any any<br />
access-list 103 remark SDM_ACL Category=0<br />
access-list 103 permit ip any host 10.10.10.3<br />
access-list 106 remark SDM_ACL Category=0<br />
access-list 106 permit ip any host 10.10.10.3<br />
access-list 107 remark SDM_ACL Category=0<br />
access-list 107 permit ip any host 10.10.10.3<br />
access-list 108 remark SDM_ACL Category=0<br />
access-list 108 permit ip any host 10.10.10.3<br />
access-list 111 remark SDM_ACL Category=0<br />
access-list 111 permit ip any host 10.10.10.3<br />
access-list 166 deny&nbsp;&nbsp; ip 207.46.0.0 0.0.255.255 any log<br />
snmp-server community xxxxxxxxxxxxxxx RO<br />
snmp-server location Sylvan Lake, AB<br />
snmp-server contact burn<br />
no cdp run<br />
radius-server attribute 32 include-in-access-req format %h<br />
radius-server vsa send accounting<br />
!<br />
control-plane<br />
!<br />
bridge 1 protocol ieee<br />
bridge 1 route ip<br />
banner login <br />
Authorized access only!<br />
<br />
alias exec spc show proc cpu | exclude 0.00<br />
!<br />
line con 0<br />
 access-class 1 in<br />
 login authentication local_authen<br />
 no modem enable<br />
 transport output telnet<br />
line aux 0<br />
 access-class 1 in<br />
 login authentication local_authen<br />
 transport output telnet<br />
line vty 0 2<br />
 access-class 1 in<br />
 privilege level 15<br />
 password 7 xxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br />
 authorization exec local_author<br />
 login authentication local_authen<br />
 transport input ssh<br />
line vty 3 4<br />
 access-class 102 in<br />
 password 7 xxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br />
 authorization exec local_author<br />
 login authentication local_authen<br />
 transport input ssh<br />
!<br />
scheduler max-task-time 5000<br />
scheduler allocate 4000 1000<br />
scheduler interval 500<br />
sntp server 216.194.70.2<br />
end</code></div></div>
]]></description>
			<content:encoded><![CDATA[Now with WPA2!!<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>!<br />
! Last configuration change at 10:10:29 MST Tue Jun 29 2010 by rbaxter<br />
! NVRAM config last updated at 10:10:30 MST Tue Jun 29 2010 by rbaxter<br />
!<br />
version 12.4<br />
no service pad<br />
service tcp-keepalives-in<br />
service tcp-keepalives-out<br />
service timestamps debug datetime msec localtime show-timezone<br />
service timestamps log datetime msec localtime show-timezone<br />
service password-encryption<br />
service sequence-numbers<br />
!<br />
hostname 851baxterit<br />
!<br />
boot-start-marker<br />
boot-end-marker<br />
!<br />
logging buffered 4096<br />
enable secret xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br />
!<br />
aaa new-model<br />
!<br />
!<br />
aaa group server radius rad_mac<br />
!<br />
aaa group server radius rad_acct<br />
!<br />
aaa group server radius rad_admin<br />
!<br />
aaa group server tacacs+ tac_admin<br />
!<br />
aaa group server radius rad_pmip<br />
!<br />
aaa group server radius dummy<br />
!<br />
aaa group server radius rad_eap<br />
 server 10.10.10.1 auth-port 1645 acct-port 1646<br />
!<br />
aaa authentication login local_authen local<br />
aaa authentication login eap_methods group rad_eap<br />
aaa authentication login mac_methods local<br />
aaa authorization exec local_author local <br />
aaa authorization ipmobile default group rad_pmip <br />
aaa accounting network acct_methods start-stop group rad_acct<br />
!<br />
!<br />
aaa session-id common<br />
clock timezone MST -7<br />
!<br />
crypto pki trustpoint TP-self-signed-3527475230<br />
 enrollment selfsigned<br />
 subject-name cn=IOS-Self-Signed-Certificate-3527475230<br />
 revocation-check none<br />
 rsakeypair TP-self-signed-3527475230<br />
!<br />
!<br />
crypto pki certificate chain TP-self-signed-3527475230<br />
 certificate self-signed 01<br />
umm no<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;quit<br />
dot11 syslog<br />
!<br />
dot11 ssid baxterIT<br />
&nbsp;&nbsp; vlan 1<br />
&nbsp;&nbsp; authentication open <br />
&nbsp;&nbsp; authentication key-management wpa<br />
&nbsp;&nbsp; wpa-psk ascii 7 xxxxxxxxxxxxxxxxxxxxxxxx<br />
!<br />
no ip source-route<br />
no ip dhcp use vrf connected<br />
!<br />
ip dhcp pool sdm-pool<br />
&nbsp;&nbsp; import all<br />
&nbsp;&nbsp; network 10.10.10.0 255.255.255.0<br />
&nbsp;&nbsp; default-router 10.10.10.1 <br />
&nbsp;&nbsp; domain-name baxterit.net<br />
&nbsp;&nbsp; dns-server 129.128.5.233 129.128.76.233 <br />
!<br />
!<br />
ip cef<br />
no ip bootp server<br />
no ip domain lookup<br />
ip domain name baxterit.net<br />
!<br />
parameter-map type regex sdm-regex-nonascii<br />
 pattern [^&#92;x00-&#92;x80]<br />
<br />
!<br />
!<br />
!<br />
spanning-tree portfast bpduguard<br />
username rbaxter privilege 15 secret 5 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br />
! <br />
!<br />
archive<br />
 log config<br />
&nbsp;&nbsp;hidekeys<br />
!<br />
!<br />
ip tcp synwait-time 10<br />
!<br />
bridge irb<br />
!<br />
!<br />
interface Tunnel0<br />
 description Hurricane Electric IPv6 Tunnel Broker<br />
 no ip address<br />
 tunnel source 96.51.7.208<br />
 tunnel destination 216.218.226.238<br />
!<br />
interface FastEthernet0<br />
 description Linksys SD2008<br />
!<br />
interface FastEthernet1<br />
 description Popcorn Hour<br />
 spanning-tree portfast<br />
!<br />
interface FastEthernet2<br />
 description Unused<br />
 spanning-tree portfast<br />
!<br />
interface FastEthernet3<br />
 description Unused<br />
 spanning-tree portfast<br />
!<br />
interface FastEthernet4<br />
 description Telus<br />
 ip dhcp client update dns<br />
 ip address dhcp hostname gw.baxterit.net<br />
 ip nat outside<br />
 ip virtual-reassembly<br />
 duplex auto<br />
 speed auto<br />
!<br />
interface Dot11Radio0<br />
 description Wireless<br />
 no ip address<br />
 no ip redirects<br />
 no ip unreachables<br />
 no ip proxy-arp<br />
 ip flow ingress<br />
 ip flow egress<br />
 no ip route-cache cef<br />
 ip route-cache flow<br />
 beacon period 20<br />
 beacon dtim-period 1<br />
 !<br />
 encryption vlan 1 mode ciphers aes-ccm <br />
 !<br />
 ssid baxterIT<br />
 !<br />
 speed basic-36.0 basic-48.0 basic-54.0<br />
 station-role root<br />
 world-mode dot11d country CA both<br />
 no cdp enable<br />
 bridge-group 1<br />
 bridge-group 1 subscriber-loop-control<br />
 bridge-group 1 spanning-disabled<br />
 bridge-group 1 block-unknown-source<br />
 no bridge-group 1 source-learning<br />
 no bridge-group 1 unicast-flooding<br />
!<br />
interface Dot11Radio0.1<br />
 encapsulation dot1Q 1 native<br />
 no cdp enable<br />
 bridge-group 1<br />
 bridge-group 1 subscriber-loop-control<br />
 bridge-group 1 block-unknown-source<br />
 no bridge-group 1 source-learning<br />
 no bridge-group 1 unicast-flooding<br />
!<br />
interface Vlan1<br />
 description default<br />
 no ip address<br />
 ip tcp adjust-mss 1452<br />
 bridge-group 1<br />
!<br />
interface BVI1<br />
 description &#36;ES_LAN&#36;<br />
 ip address 10.10.10.1 255.255.255.0<br />
 ip nat inside<br />
 ip virtual-reassembly<br />
!<br />
ip forward-protocol nd<br />
ip route 67.10.232.0 255.255.255.0 Null0<br />
ip route 72.51.48.0 255.255.255.0 Null0<br />
!<br />
ip http server<br />
ip http access-class 3<br />
ip http authentication local<br />
ip http secure-server<br />
ip http timeout-policy idle 60 life 86400 requests 10000<br />
ip nat inside source list 1 interface FastEthernet4 overload<br />
ip nat inside source static tcp 10.10.10.4 22 174.0.147.140 22 extendable<br />
ip nat inside source static tcp 10.10.10.4 53 174.0.147.140 53 extendable<br />
ip nat inside source static udp 10.10.10.4 53 174.0.147.140 53 extendable<br />
ip nat inside source static tcp 10.10.10.4 2086 174.0.147.140 2086 extendable<br />
ip nat inside source static tcp 10.10.10.4 2087 174.0.147.140 2087 extendable<br />
ip nat inside source static udp 10.10.10.1 161 174.0.147.140 9161 extendable<br />
ip nat inside source static tcp 10.10.10.4 10161 174.0.147.140 10161 extendable<br />
ip nat inside source static udp 10.10.10.4 10161 174.0.147.140 10161 extendable<br />
!<br />
ip access-list extended SDM_HTTPS<br />
 remark SDM_ACL Category=1<br />
 permit tcp any any eq 443<br />
ip access-list extended SDM_SHELL<br />
 remark SDM_ACL Category=1<br />
 permit tcp any any eq cmd<br />
ip access-list extended SDM_SSH<br />
 remark SDM_ACL Category=1<br />
 permit tcp any any eq 22<br />
!<br />
access-list 1 remark SDM_ACL Category=3<br />
access-list 1 permit 10.10.10.0 0.0.0.255<br />
access-list 2 remark HTTP Access-class list<br />
access-list 2 remark SDM_ACL Category=1<br />
access-list 2 permit 10.10.10.0 0.0.0.7<br />
access-list 2 deny&nbsp;&nbsp; any<br />
access-list 3 remark HTTP Access-class list<br />
access-list 3 remark SDM_ACL Category=1<br />
access-list 3 permit 10.10.10.0 0.0.0.7<br />
access-list 3 deny&nbsp;&nbsp; any<br />
access-list 102 remark VTY Access-class list<br />
access-list 102 remark SDM_ACL Category=1<br />
access-list 102 permit ip 10.10.10.0 0.0.0.7 any<br />
access-list 102 deny&nbsp;&nbsp; ip any any<br />
access-list 103 remark SDM_ACL Category=0<br />
access-list 103 permit ip any host 10.10.10.3<br />
access-list 106 remark SDM_ACL Category=0<br />
access-list 106 permit ip any host 10.10.10.3<br />
access-list 107 remark SDM_ACL Category=0<br />
access-list 107 permit ip any host 10.10.10.3<br />
access-list 108 remark SDM_ACL Category=0<br />
access-list 108 permit ip any host 10.10.10.3<br />
access-list 111 remark SDM_ACL Category=0<br />
access-list 111 permit ip any host 10.10.10.3<br />
access-list 166 deny&nbsp;&nbsp; ip 207.46.0.0 0.0.255.255 any log<br />
snmp-server community xxxxxxxxxxxxxxx RO<br />
snmp-server location Sylvan Lake, AB<br />
snmp-server contact burn<br />
no cdp run<br />
radius-server attribute 32 include-in-access-req format %h<br />
radius-server vsa send accounting<br />
!<br />
control-plane<br />
!<br />
bridge 1 protocol ieee<br />
bridge 1 route ip<br />
banner login <br />
Authorized access only!<br />
<br />
alias exec spc show proc cpu | exclude 0.00<br />
!<br />
line con 0<br />
 access-class 1 in<br />
 login authentication local_authen<br />
 no modem enable<br />
 transport output telnet<br />
line aux 0<br />
 access-class 1 in<br />
 login authentication local_authen<br />
 transport output telnet<br />
line vty 0 2<br />
 access-class 1 in<br />
 privilege level 15<br />
 password 7 xxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br />
 authorization exec local_author<br />
 login authentication local_authen<br />
 transport input ssh<br />
line vty 3 4<br />
 access-class 102 in<br />
 password 7 xxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br />
 authorization exec local_author<br />
 login authentication local_authen<br />
 transport input ssh<br />
!<br />
scheduler max-task-time 5000<br />
scheduler allocate 4000 1000<br />
scheduler interval 500<br />
sntp server 216.194.70.2<br />
end</code></div></div>
]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[ip2asn]]></title>
			<link>http://bluedevil.ca/forum/showthread.php?tid=11</link>
			<pubDate>Mon, 14 Dec 2009 05:58:20 -0700</pubDate>
			<guid isPermaLink="false">http://bluedevil.ca/forum/showthread.php?tid=11</guid>
			<description><![CDATA[ip2asn.tcl<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>set ip2asn_trigger "!"<br />
set ip2asn_ver "0.0.1"<br />
set ip2asn_script "|/home/devil/scripts/ip2asn.pl"<br />
<br />
bind pub - &#36;{ip2asn_trigger}ip2asn pub:ip2asn<br />
<br />
proc pub:ip2asn {nick uhost hand chan arg} {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;global ip2asn_trigger ip2asn_ver ip2asn_script<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set option [string tolower [lindex [split &#36;arg] 0]]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set fh [open "&#36;ip2asn_script &#36;arg" "r"]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while {![eof &#36;fh]} {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set line [gets &#36;fh]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if {[string length &#36;line] &gt; 0} {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;putserv "PRIVMSG &#36;chan :&#36;line"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;close &#36;fh<br />
}<br />
<br />
putlog "TCL loaded: ip2asn.tcl v&#36;ip2asn_ver by Popdog &lt;popdog@pr0n.ca&gt;"</code></div></div>
<br />
ip2asn.pl<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>#!/usr/bin/perl<br />
<br />
#<br />
# Protected under the PopGPL License version 2.2.4.popdog-r8<br />
# Copyright March 2, 2006<br />
#<br />
# Written by Popdog<br />
# Popdog &lt;popdog@pr0n.ca&gt;<br />
#<br />
#<br />
# Some useful query flags:<br />
#<br />
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Whois&nbsp;&nbsp; Netcat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Action<br />
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -p&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;prefix&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;include matching prefix<br />
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -q&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;noprefix&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disable matching prefix (default)<br />
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;countrycode&nbsp;&nbsp;&nbsp;&nbsp; include matching country code<br />
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -d&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nocountrycode&nbsp;&nbsp; disable country codes (default)<br />
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;asname&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;include asnames (default)<br />
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -o&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;noasname&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disable asnames<br />
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -r&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;registry&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;display matching registry<br />
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -s&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;noregistry&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disable registry display (default)<br />
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;allocdate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; enable allocation date<br />
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;noallocdate&nbsp;&nbsp;&nbsp;&nbsp; disable allocation date (default)<br />
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;truncate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;truncate asnames (default)<br />
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -u&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;notruncate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;do not truncate asnames<br />
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -v&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;verbose&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; enable all flags (-c -r -p -a -u -a)<br />
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;help&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this help message<br />
#<br />
<br />
<br />
use warnings;<br />
use strict;<br />
<br />
if (@ARGV != 1 &amp;&amp; &#36;ARGV[0] !~ /^&#92;d+&#92;.&#92;d+&#92;.&#92;d+&#92;.&#92;d+&#36;/) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;print STDERR "usage: ip2asn A.B.C.D&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;exit 1;<br />
}<br />
<br />
print `/usr/bin/whois -h whois.cymru.com " -u -a &#36;ARGV[0]"`;<br />
<br />
<br />
# &lt;/Popr0x0r&gt;</code></div></div>
]]></description>
			<content:encoded><![CDATA[ip2asn.tcl<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>set ip2asn_trigger "!"<br />
set ip2asn_ver "0.0.1"<br />
set ip2asn_script "|/home/devil/scripts/ip2asn.pl"<br />
<br />
bind pub - &#36;{ip2asn_trigger}ip2asn pub:ip2asn<br />
<br />
proc pub:ip2asn {nick uhost hand chan arg} {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;global ip2asn_trigger ip2asn_ver ip2asn_script<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set option [string tolower [lindex [split &#36;arg] 0]]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set fh [open "&#36;ip2asn_script &#36;arg" "r"]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while {![eof &#36;fh]} {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set line [gets &#36;fh]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if {[string length &#36;line] &gt; 0} {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;putserv "PRIVMSG &#36;chan :&#36;line"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;close &#36;fh<br />
}<br />
<br />
putlog "TCL loaded: ip2asn.tcl v&#36;ip2asn_ver by Popdog &lt;popdog@pr0n.ca&gt;"</code></div></div>
<br />
ip2asn.pl<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>#!/usr/bin/perl<br />
<br />
#<br />
# Protected under the PopGPL License version 2.2.4.popdog-r8<br />
# Copyright March 2, 2006<br />
#<br />
# Written by Popdog<br />
# Popdog &lt;popdog@pr0n.ca&gt;<br />
#<br />
#<br />
# Some useful query flags:<br />
#<br />
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Whois&nbsp;&nbsp; Netcat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Action<br />
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -p&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;prefix&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;include matching prefix<br />
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -q&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;noprefix&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disable matching prefix (default)<br />
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;countrycode&nbsp;&nbsp;&nbsp;&nbsp; include matching country code<br />
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -d&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nocountrycode&nbsp;&nbsp; disable country codes (default)<br />
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;asname&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;include asnames (default)<br />
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -o&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;noasname&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disable asnames<br />
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -r&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;registry&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;display matching registry<br />
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -s&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;noregistry&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disable registry display (default)<br />
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;allocdate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; enable allocation date<br />
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;noallocdate&nbsp;&nbsp;&nbsp;&nbsp; disable allocation date (default)<br />
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;truncate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;truncate asnames (default)<br />
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -u&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;notruncate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;do not truncate asnames<br />
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -v&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;verbose&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; enable all flags (-c -r -p -a -u -a)<br />
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;help&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this help message<br />
#<br />
<br />
<br />
use warnings;<br />
use strict;<br />
<br />
if (@ARGV != 1 &amp;&amp; &#36;ARGV[0] !~ /^&#92;d+&#92;.&#92;d+&#92;.&#92;d+&#92;.&#92;d+&#36;/) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;print STDERR "usage: ip2asn A.B.C.D&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;exit 1;<br />
}<br />
<br />
print `/usr/bin/whois -h whois.cymru.com " -u -a &#36;ARGV[0]"`;<br />
<br />
<br />
# &lt;/Popr0x0r&gt;</code></div></div>
]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[servermanager.pl]]></title>
			<link>http://bluedevil.ca/forum/showthread.php?tid=10</link>
			<pubDate>Thu, 19 Nov 2009 14:49:55 -0700</pubDate>
			<guid isPermaLink="false">http://bluedevil.ca/forum/showthread.php?tid=10</guid>
			<description><![CDATA[<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>#!/usr/bin/perl<br />
&#36;filename = "serverlist.txt";<br />
<br />
# &#36;username = 'admin';<br />
&#36;username = 'root';<br />
<br />
menu();<br />
#execute();<br />
<br />
sub menu {<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "Enter root password: ";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chomp(&#36;password = &lt;STDIN&gt;);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "Choose an option:&#92;n&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "1) Generate list of servers to act on.&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "2) Execute a command on all servers in &#36;filename.&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "3) Copy some files over to all servers in &#36;filename.&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "9) Exit&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "Your choice: ";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chomp(&#36;menuitem = &lt;STDIN&gt;);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (&#36;menuitem == 1) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;genlist();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} elsif (&#36;menuitem == 2) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;execute();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} elsif (&#36;menuitem == 3) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;copy();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} elsif (&#36;menuitem == 9) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "ERROR: That menu item is not available.&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;menu();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
}<br />
<br />
sub genlist {<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "Choose an option:&#92;n&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "1) All RaQ Servers&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "2) All Ensim Servers&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "Your choice: ";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chomp(&#36;menuitem = &lt;STDIN&gt;);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (&#36;menuitem == 1) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gen_all_server(1);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} elsif (&#36;menuitem == 2) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gen_all_server(2);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "ERROR: That menu item is not available.&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;genlist();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
}<br />
<br />
sub gen_all_server {<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;servertype = &#36;_[0];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (&#36;servertype == 1) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;OSID = 1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} elsif (&#36;servertype == 2) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;OSID = '4 OR OSID = 10 OR OSID = 11';<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;die "ERROR: Unknown server type.&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;use DBI;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;dbh = DBI-&gt;connect('DBI:mysql:STEGGI', 'steggi', "&lt;steggi password&gt;");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;sql = "select Hostname from HostServer where (OSID=&#36;OSID) and Active='yes'";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;res=&#36;dbh-&gt;prepare(&#36;sql);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;res-&gt;execute;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while (@line=&#36;res-&gt;fetchrow_array) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;servername = &#36;line[0];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# print &#36;servername . "&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;tofile .= "&#36;servername&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;open (SERVERLIST, "&gt;&#36;filename");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print SERVERLIST &#36;tofile;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "&#36;filename written to.&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;close (SERVERLIST);<br />
<br />
}<br />
<br />
sub execute {<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!-e &#36;filename) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;die "&#36;filename does not exist.&nbsp;&nbsp;Create it first.&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;open (SERVERLIST, "&#36;filename");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@f = &lt;SERVERLIST&gt;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;close (SERVERLIST);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;numservers = @f;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "&#36;numservers servers to act on.&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "What command? ";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chomp(&#36;command = &lt;STDIN&gt;);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Log the command.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;open (HISTORYFILE, "&gt;&gt;serverhistory.txt");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print HISTORYFILE "&#36;command&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;close (HISTORYFILE);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;use MIME::Base64;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;use Net::SSH::Perl;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;params{'options'} = ([ "UserKnownHostsFile .ssh/known_hosts" ]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Using user and pw from above<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;open (SESAME, "&gt;serveroutput.txt");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach (@f) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chomp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;hostname = lc(&#36;_);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;fqdn = &#36;hostname . "";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my &#36;ssh = Net::SSH::Perl-&gt;new("&#36;fqdn", %params);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;ssh-&gt;login("&#36;username", "&#36;password");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my(&#36;stdout, &#36;stderr, &#36;exit) = &#36;ssh-&gt;cmd("&#36;command");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;out .= "&#92;n|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;out .= "Hostname:&#36;fqdn&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;out .= "stdout is:&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;out .= "=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-&#92;n&#92;|";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;out .= &#36;stdout;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;out .= "=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-&#92;n&#92;|";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;out .= "stderr is:&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;out .= "=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-&#92;n&#92;|";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;out .= &#36;stderr;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;out .= "=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-&#92;n&#92;|";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;out .= "exit is:&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;out .= "=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-&#92;n&#92;|";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;out .= &#36;exit;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;out .= "&#92;n=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-&#92;n&#92;|";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print &#36;out;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print SESAME &#36;out;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;out = '';<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "&#92;n|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;close (SESAME);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
}<br />
<br />
sub copy {<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;open (SERVERLIST, "&#36;filename");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@servers = &lt;SERVERLIST&gt;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;close (SERVERLIST);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;numservers = @servers;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "&#36;numservers servers to act on. ( ";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach (@servers) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chomp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print &#36;_;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print " ";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print ")&#92;n";<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "Enter all the filenames, separated by a space: ";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chomp (&#36;filenames = &lt;STDIN&gt;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@filename_array = split ' ', &#36;filenames;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# using pw from above<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;use MIME::Base64;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;use Net::SSH::Perl;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;params{'options'} = ([ "UserKnownHostsFile .ssh/known_hosts" ]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;params{'debug'} = true;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;params{'compression'} = true;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach (@servers) {<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chomp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;hostname = lc(&#36;_);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;fqdn = &#36;hostname . "";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "Doing &#36;fqdn&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my &#36;ssh = Net::SSH::Perl-&gt;new("&#36;fqdn", %params);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;ssh-&gt;login("&#36;username", "&#36;password");<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Iterate over each file to be copied.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach (@filename_array) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;nameoffile = &#36;_;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;open FH, &#36;nameoffile or die "Can't open &#36;nameoffile: &#36;!";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my &#36;c = do { local &#36;/; &lt;FH&gt; };<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;close FH or die "Can't close &#36;nameoffile: &#36;!";<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my(&#36;out, &#36;err, &#36;exit) = &#36;ssh-&gt;cmd("umask 177; cat - &gt;&#36;nameoffile", &#36;c);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;die "Can't write file &#36;nameoffile: &#36;err" if &#36;err;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
}</code></div></div>
]]></description>
			<content:encoded><![CDATA[<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>#!/usr/bin/perl<br />
&#36;filename = "serverlist.txt";<br />
<br />
# &#36;username = 'admin';<br />
&#36;username = 'root';<br />
<br />
menu();<br />
#execute();<br />
<br />
sub menu {<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "Enter root password: ";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chomp(&#36;password = &lt;STDIN&gt;);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "Choose an option:&#92;n&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "1) Generate list of servers to act on.&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "2) Execute a command on all servers in &#36;filename.&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "3) Copy some files over to all servers in &#36;filename.&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "9) Exit&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "Your choice: ";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chomp(&#36;menuitem = &lt;STDIN&gt;);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (&#36;menuitem == 1) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;genlist();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} elsif (&#36;menuitem == 2) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;execute();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} elsif (&#36;menuitem == 3) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;copy();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} elsif (&#36;menuitem == 9) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "ERROR: That menu item is not available.&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;menu();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
}<br />
<br />
sub genlist {<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "Choose an option:&#92;n&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "1) All RaQ Servers&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "2) All Ensim Servers&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "Your choice: ";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chomp(&#36;menuitem = &lt;STDIN&gt;);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (&#36;menuitem == 1) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gen_all_server(1);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} elsif (&#36;menuitem == 2) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gen_all_server(2);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "ERROR: That menu item is not available.&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;genlist();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
}<br />
<br />
sub gen_all_server {<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;servertype = &#36;_[0];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (&#36;servertype == 1) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;OSID = 1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} elsif (&#36;servertype == 2) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;OSID = '4 OR OSID = 10 OR OSID = 11';<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;die "ERROR: Unknown server type.&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;use DBI;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;dbh = DBI-&gt;connect('DBI:mysql:STEGGI', 'steggi', "&lt;steggi password&gt;");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;sql = "select Hostname from HostServer where (OSID=&#36;OSID) and Active='yes'";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;res=&#36;dbh-&gt;prepare(&#36;sql);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;res-&gt;execute;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while (@line=&#36;res-&gt;fetchrow_array) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;servername = &#36;line[0];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# print &#36;servername . "&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;tofile .= "&#36;servername&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;open (SERVERLIST, "&gt;&#36;filename");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print SERVERLIST &#36;tofile;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "&#36;filename written to.&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;close (SERVERLIST);<br />
<br />
}<br />
<br />
sub execute {<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!-e &#36;filename) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;die "&#36;filename does not exist.&nbsp;&nbsp;Create it first.&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;open (SERVERLIST, "&#36;filename");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@f = &lt;SERVERLIST&gt;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;close (SERVERLIST);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;numservers = @f;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "&#36;numservers servers to act on.&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "What command? ";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chomp(&#36;command = &lt;STDIN&gt;);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Log the command.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;open (HISTORYFILE, "&gt;&gt;serverhistory.txt");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print HISTORYFILE "&#36;command&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;close (HISTORYFILE);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;use MIME::Base64;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;use Net::SSH::Perl;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;params{'options'} = ([ "UserKnownHostsFile .ssh/known_hosts" ]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Using user and pw from above<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;open (SESAME, "&gt;serveroutput.txt");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach (@f) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chomp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;hostname = lc(&#36;_);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;fqdn = &#36;hostname . "";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my &#36;ssh = Net::SSH::Perl-&gt;new("&#36;fqdn", %params);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;ssh-&gt;login("&#36;username", "&#36;password");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my(&#36;stdout, &#36;stderr, &#36;exit) = &#36;ssh-&gt;cmd("&#36;command");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;out .= "&#92;n|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;out .= "Hostname:&#36;fqdn&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;out .= "stdout is:&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;out .= "=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-&#92;n&#92;|";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;out .= &#36;stdout;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;out .= "=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-&#92;n&#92;|";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;out .= "stderr is:&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;out .= "=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-&#92;n&#92;|";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;out .= &#36;stderr;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;out .= "=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-&#92;n&#92;|";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;out .= "exit is:&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;out .= "=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-&#92;n&#92;|";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;out .= &#36;exit;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;out .= "&#92;n=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-&#92;n&#92;|";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print &#36;out;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print SESAME &#36;out;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;out = '';<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "&#92;n|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;close (SESAME);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
}<br />
<br />
sub copy {<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;open (SERVERLIST, "&#36;filename");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@servers = &lt;SERVERLIST&gt;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;close (SERVERLIST);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;numservers = @servers;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "&#36;numservers servers to act on. ( ";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach (@servers) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chomp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print &#36;_;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print " ";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print ")&#92;n";<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "Enter all the filenames, separated by a space: ";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chomp (&#36;filenames = &lt;STDIN&gt;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@filename_array = split ' ', &#36;filenames;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# using pw from above<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;use MIME::Base64;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;use Net::SSH::Perl;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;params{'options'} = ([ "UserKnownHostsFile .ssh/known_hosts" ]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;params{'debug'} = true;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;params{'compression'} = true;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach (@servers) {<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chomp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;hostname = lc(&#36;_);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;fqdn = &#36;hostname . "";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "Doing &#36;fqdn&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my &#36;ssh = Net::SSH::Perl-&gt;new("&#36;fqdn", %params);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;ssh-&gt;login("&#36;username", "&#36;password");<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Iterate over each file to be copied.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach (@filename_array) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;nameoffile = &#36;_;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;open FH, &#36;nameoffile or die "Can't open &#36;nameoffile: &#36;!";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my &#36;c = do { local &#36;/; &lt;FH&gt; };<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;close FH or die "Can't close &#36;nameoffile: &#36;!";<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my(&#36;out, &#36;err, &#36;exit) = &#36;ssh-&gt;cmd("umask 177; cat - &gt;&#36;nameoffile", &#36;c);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;die "Can't write file &#36;nameoffile: &#36;err" if &#36;err;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
}</code></div></div>
]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[index generator]]></title>
			<link>http://bluedevil.ca/forum/showthread.php?tid=9</link>
			<pubDate>Thu, 19 Nov 2009 14:48:34 -0700</pubDate>
			<guid isPermaLink="false">http://bluedevil.ca/forum/showthread.php?tid=9</guid>
			<description><![CDATA[<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>#!/bin/sh<br />
<br />
# Description: script that creates index.html files for use with publicfile<br />
# Author: petre rodan &lt;kaiowas@gentoo.org&gt;<br />
<br />
ROOT_DIR=/home/burn/web/eggdrop<br />
INDEX="index.html"<br />
<br />
###########################################<br />
<br />
cd &#36;{ROOT_DIR}<br />
<br />
add_header() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cat &lt;&lt; EOF &gt; &#36;{1}/&#36;{INDEX}<br />
&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;eggdrop files repository&lt;/title&gt;<br />
&lt;meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"&gt;<br />
&lt;meta name="robots" content="ALL,INDEX,FOLLOW"&gt;<br />
&lt;style&gt;<br />
BODY {<br />
&nbsp;&nbsp;&nbsp;&nbsp;background-color: #FFFFFF;<br />
&nbsp;&nbsp;&nbsp;&nbsp;margin-left: 100px;<br />
&nbsp;&nbsp;&nbsp;&nbsp;margin-top: 100px;<br />
&nbsp;&nbsp;&nbsp;&nbsp;margin-right: 100px;<br />
}<br />
a:link {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font-family: Verdana, Tahoma, Arial, sans-serif;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font-size: 12px;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font-weight: normal;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color: #003399;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text-decoration: none;<br />
}<br />
a:visited {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font-family: Verdana, Tahoma, Arial, sans-serif;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font-size: 12px;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font-weight: normal;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color: #002651;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text-decoration: none;<br />
}<br />
a:hover {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font-family: Verdana, Tahoma, Arial, sans-serif;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font-size: 12px;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font-weight: normal;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color: #003399;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text-decoration: underline;<br />
}<br />
.dir:link {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font-family: Verdana, Tahoma, Arial, sans-serif;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font-size: 12px;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font-weight: bold;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color: #7a5ada;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text-decoration: none;<br />
}<br />
.dir:visited {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font-family: Verdana, Tahoma, Arial, sans-serif;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font-size: 12px;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font-weight: bold;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color: #5a3aba;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text-decoration: none;<br />
}<br />
.dir:hover {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font-family: Verdana, Tahoma, Arial, sans-serif;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font-size: 12px;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font-weight: bold;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color: #5a3ada;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text-decoration: none;<br />
}<br />
.info {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font-family: Verdana, Tahoma, Arial, sans-serif;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font-size: 12px;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font-weight: normal;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color: #999999;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text-decoration: none;<br />
}<br />
.title {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font-family: Verdana, Tahoma, Arial, sans-serif;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font-size: 30px;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font-weight: bold;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color: #999999;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text-decoration: none;<br />
}<br />
&lt;/style&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;table align="center" border="0" cellpadding="2" cellspacing="0"&gt;<br />
&lt;tr&gt;&lt;td class="title"&gt; `basename &#36;{1}` &lt;/td&gt;&lt;/tr&gt;<br />
&lt;/table&gt;<br />
EOF<br />
}<br />
<br />
add_dirs() {<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo '&lt;br&gt;&lt;a href="http://bluedevil.ca/eggdrop/" class="dir" &gt;/&lt;/a&gt;&lt;br&gt;&lt;a href="../" class="dir" &gt;../&lt;/a&gt;&lt;br&gt;' &gt;&gt; &#36;{1}/&#36;{INDEX}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;find &#36;{1} -maxdepth 1 -xdev -type d -exec bash -c 'echo &#92;&lt;a href=&#92;"{}/&#92;" class=&#92;"dir&#92;" &#92;&gt;{}&#92;&lt;/a&#92;&gt;&#92;&lt;br&#92;&gt;' &#92;; | sed "s|&#36;{1}/||g"| sed "s|&#36;{1}||g"| sort --dictionary-order --ignore-nonprinting &gt;&gt; &#36;{1}/&#36;{INDEX}<br />
<br />
}<br />
<br />
add_files() {<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;find &#36;{1} -maxdepth 1 -xdev -type f -exec bash -c 'echo &#92;&lt;a href=&#92;"{}&#92;"&#92;&gt;{}&#92;&lt;/a&#92;&gt;&#92;&lt;br&#92;&gt;' &#92;; | sed "s|&#36;{1}/||g"| sed "s|&#36;{1}||g"| grep -v htaccess | grep -v &#36;{INDEX}| sort --dictionary-order --ignore-nonprinting &gt;&gt; &#36;{1}/&#36;{INDEX}<br />
<br />
}<br />
<br />
add_footer() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cat &lt;&lt; EOF &gt;&gt; &#36;{1}/&#36;{INDEX}<br />
&lt;br&gt;&lt;br&gt;<br />
&lt;table align="center" border="0" cellpadding="2" cellspacing="0"&gt;<br />
&lt;tr&gt;&lt;td class="info"&gt; `du -S --max-depth=0 -h &#36;{1} | cut -f1` in `cat &#36;{1}/&#36;{INDEX} | grep href | grep -v 'class="dir"' | grep -v &#36;{INDEX} |wc -l` files &lt;/td&gt;&lt;/tr&gt;<br />
&lt;/table&gt;<br />
&lt;/html&gt;<br />
&lt;/body&gt;<br />
EOF<br />
}<br />
<br />
<br />
create_index()<br />
{<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[ `ls -1 --sort=time &#36;{1}/* | head -n1 | grep "&#36;{INDEX}"` ] &amp;&amp; return 0<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo " * &#36;1: refreshing"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add_header &#36;1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add_dirs &#36;1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add_files &#36;1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add_footer &#36;1<br />
}<br />
<br />
for dir in `find &#36;{ROOT_DIR} -type d`; do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;create_index &#36;dir<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chmod 644 &#36;{dir}/&#36;{INDEX}<br />
done</code></div></div>
]]></description>
			<content:encoded><![CDATA[<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>#!/bin/sh<br />
<br />
# Description: script that creates index.html files for use with publicfile<br />
# Author: petre rodan &lt;kaiowas@gentoo.org&gt;<br />
<br />
ROOT_DIR=/home/burn/web/eggdrop<br />
INDEX="index.html"<br />
<br />
###########################################<br />
<br />
cd &#36;{ROOT_DIR}<br />
<br />
add_header() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cat &lt;&lt; EOF &gt; &#36;{1}/&#36;{INDEX}<br />
&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;eggdrop files repository&lt;/title&gt;<br />
&lt;meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"&gt;<br />
&lt;meta name="robots" content="ALL,INDEX,FOLLOW"&gt;<br />
&lt;style&gt;<br />
BODY {<br />
&nbsp;&nbsp;&nbsp;&nbsp;background-color: #FFFFFF;<br />
&nbsp;&nbsp;&nbsp;&nbsp;margin-left: 100px;<br />
&nbsp;&nbsp;&nbsp;&nbsp;margin-top: 100px;<br />
&nbsp;&nbsp;&nbsp;&nbsp;margin-right: 100px;<br />
}<br />
a:link {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font-family: Verdana, Tahoma, Arial, sans-serif;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font-size: 12px;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font-weight: normal;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color: #003399;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text-decoration: none;<br />
}<br />
a:visited {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font-family: Verdana, Tahoma, Arial, sans-serif;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font-size: 12px;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font-weight: normal;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color: #002651;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text-decoration: none;<br />
}<br />
a:hover {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font-family: Verdana, Tahoma, Arial, sans-serif;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font-size: 12px;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font-weight: normal;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color: #003399;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text-decoration: underline;<br />
}<br />
.dir:link {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font-family: Verdana, Tahoma, Arial, sans-serif;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font-size: 12px;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font-weight: bold;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color: #7a5ada;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text-decoration: none;<br />
}<br />
.dir:visited {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font-family: Verdana, Tahoma, Arial, sans-serif;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font-size: 12px;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font-weight: bold;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color: #5a3aba;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text-decoration: none;<br />
}<br />
.dir:hover {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font-family: Verdana, Tahoma, Arial, sans-serif;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font-size: 12px;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font-weight: bold;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color: #5a3ada;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text-decoration: none;<br />
}<br />
.info {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font-family: Verdana, Tahoma, Arial, sans-serif;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font-size: 12px;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font-weight: normal;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color: #999999;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text-decoration: none;<br />
}<br />
.title {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font-family: Verdana, Tahoma, Arial, sans-serif;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font-size: 30px;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font-weight: bold;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color: #999999;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text-decoration: none;<br />
}<br />
&lt;/style&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;table align="center" border="0" cellpadding="2" cellspacing="0"&gt;<br />
&lt;tr&gt;&lt;td class="title"&gt; `basename &#36;{1}` &lt;/td&gt;&lt;/tr&gt;<br />
&lt;/table&gt;<br />
EOF<br />
}<br />
<br />
add_dirs() {<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo '&lt;br&gt;&lt;a href="http://bluedevil.ca/eggdrop/" class="dir" &gt;/&lt;/a&gt;&lt;br&gt;&lt;a href="../" class="dir" &gt;../&lt;/a&gt;&lt;br&gt;' &gt;&gt; &#36;{1}/&#36;{INDEX}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;find &#36;{1} -maxdepth 1 -xdev -type d -exec bash -c 'echo &#92;&lt;a href=&#92;"{}/&#92;" class=&#92;"dir&#92;" &#92;&gt;{}&#92;&lt;/a&#92;&gt;&#92;&lt;br&#92;&gt;' &#92;; | sed "s|&#36;{1}/||g"| sed "s|&#36;{1}||g"| sort --dictionary-order --ignore-nonprinting &gt;&gt; &#36;{1}/&#36;{INDEX}<br />
<br />
}<br />
<br />
add_files() {<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;find &#36;{1} -maxdepth 1 -xdev -type f -exec bash -c 'echo &#92;&lt;a href=&#92;"{}&#92;"&#92;&gt;{}&#92;&lt;/a&#92;&gt;&#92;&lt;br&#92;&gt;' &#92;; | sed "s|&#36;{1}/||g"| sed "s|&#36;{1}||g"| grep -v htaccess | grep -v &#36;{INDEX}| sort --dictionary-order --ignore-nonprinting &gt;&gt; &#36;{1}/&#36;{INDEX}<br />
<br />
}<br />
<br />
add_footer() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cat &lt;&lt; EOF &gt;&gt; &#36;{1}/&#36;{INDEX}<br />
&lt;br&gt;&lt;br&gt;<br />
&lt;table align="center" border="0" cellpadding="2" cellspacing="0"&gt;<br />
&lt;tr&gt;&lt;td class="info"&gt; `du -S --max-depth=0 -h &#36;{1} | cut -f1` in `cat &#36;{1}/&#36;{INDEX} | grep href | grep -v 'class="dir"' | grep -v &#36;{INDEX} |wc -l` files &lt;/td&gt;&lt;/tr&gt;<br />
&lt;/table&gt;<br />
&lt;/html&gt;<br />
&lt;/body&gt;<br />
EOF<br />
}<br />
<br />
<br />
create_index()<br />
{<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[ `ls -1 --sort=time &#36;{1}/* | head -n1 | grep "&#36;{INDEX}"` ] &amp;&amp; return 0<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo " * &#36;1: refreshing"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add_header &#36;1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add_dirs &#36;1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add_files &#36;1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add_footer &#36;1<br />
}<br />
<br />
for dir in `find &#36;{ROOT_DIR} -type d`; do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;create_index &#36;dir<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chmod 644 &#36;{dir}/&#36;{INDEX}<br />
done</code></div></div>
]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[pidlock.sh]]></title>
			<link>http://bluedevil.ca/forum/showthread.php?tid=8</link>
			<pubDate>Thu, 19 Nov 2009 14:29:20 -0700</pubDate>
			<guid isPermaLink="false">http://bluedevil.ca/forum/showthread.php?tid=8</guid>
			<description><![CDATA[stop recurring cron jobs from crashing into each other. =)<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>need a pid for a running app?<br />
have a cron that may take some time and you don't want a buttload of them running at the same time? then this may be of some use to you. =)<br />
<br />
[code]#!/bin/bash<br />
if [ "&#36;1" == "-l" ]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PIDDIR="&#36;{2}"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shift 2<br />
else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if [ -z "&#36;{USER}" ]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if [ -n "&#36;{LOGNAME}" ]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;USER="&#36;{LOGNAME}"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo "&#92;&#36;USER is not set!"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit -2<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PIDDIR=/tmp/&#36;{USER}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mkdir -p &#36;{PIDDIR}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ERR=&#36;?<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chmod 700 &#36;{PIDDIR}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ERR=&#36;((&#36;{ERR}+&#36;?))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if [ "&#36;{ERR}" -gt 0 ]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo "Some error in creating the PIDDIR!"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit -3<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
fi<br />
if [ -z "&#36;1" ]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo "Error! You need to specify a command to run!"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit -1<br />
fi<br />
MYPID=&#36;&#36;<br />
MYNAME=`basename &#36;0`-`basename &#36;1`<br />
PIDFILE=&#36;{PIDDIR}/&#36;{MYNAME}.pid<br />
if [ -f "&#36;{PIDFILE}" ]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OLDPID=&#36;(&lt; &#36;{PIDFILE})<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INUSE=`ps -ef |&nbsp;&nbsp;grep &#36;OLDPID | grep -v "grep &#36;OLDPID" | xargs | cut -d' ' -f2`<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if [ -z "&#36;{INUSE}" ]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#echo "Stale pidfile detected. Removing"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rm &#36;{PIDFILE}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#echo "ERROR! Running already!"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo "Warning! '&#36;MYNAME' is running already!"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit 0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
fi<br />
#echo "Not running already, putting PID in pidfile"<br />
echo &#36;{MYPID} &gt;&#36;{PIDFILE}<br />
CMD="&#36;*"<br />
#echo "Doing something (&#36;{CMD})"<br />
eval &#36;{CMD}<br />
#echo "Cleaning up &#36;{PIDFILE}"</code></div></div>
[/code]]]></description>
			<content:encoded><![CDATA[stop recurring cron jobs from crashing into each other. =)<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>need a pid for a running app?<br />
have a cron that may take some time and you don't want a buttload of them running at the same time? then this may be of some use to you. =)<br />
<br />
[code]#!/bin/bash<br />
if [ "&#36;1" == "-l" ]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PIDDIR="&#36;{2}"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shift 2<br />
else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if [ -z "&#36;{USER}" ]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if [ -n "&#36;{LOGNAME}" ]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;USER="&#36;{LOGNAME}"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo "&#92;&#36;USER is not set!"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit -2<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PIDDIR=/tmp/&#36;{USER}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mkdir -p &#36;{PIDDIR}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ERR=&#36;?<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chmod 700 &#36;{PIDDIR}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ERR=&#36;((&#36;{ERR}+&#36;?))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if [ "&#36;{ERR}" -gt 0 ]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo "Some error in creating the PIDDIR!"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit -3<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
fi<br />
if [ -z "&#36;1" ]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo "Error! You need to specify a command to run!"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit -1<br />
fi<br />
MYPID=&#36;&#36;<br />
MYNAME=`basename &#36;0`-`basename &#36;1`<br />
PIDFILE=&#36;{PIDDIR}/&#36;{MYNAME}.pid<br />
if [ -f "&#36;{PIDFILE}" ]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OLDPID=&#36;(&lt; &#36;{PIDFILE})<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INUSE=`ps -ef |&nbsp;&nbsp;grep &#36;OLDPID | grep -v "grep &#36;OLDPID" | xargs | cut -d' ' -f2`<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if [ -z "&#36;{INUSE}" ]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#echo "Stale pidfile detected. Removing"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rm &#36;{PIDFILE}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#echo "ERROR! Running already!"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo "Warning! '&#36;MYNAME' is running already!"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit 0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
fi<br />
#echo "Not running already, putting PID in pidfile"<br />
echo &#36;{MYPID} &gt;&#36;{PIDFILE}<br />
CMD="&#36;*"<br />
#echo "Doing something (&#36;{CMD})"<br />
eval &#36;{CMD}<br />
#echo "Cleaning up &#36;{PIDFILE}"</code></div></div>
[/code]]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[named.conf / bind.conf]]></title>
			<link>http://bluedevil.ca/forum/showthread.php?tid=7</link>
			<pubDate>Thu, 19 Nov 2009 14:25:20 -0700</pubDate>
			<guid isPermaLink="false">http://bluedevil.ca/forum/showthread.php?tid=7</guid>
			<description><![CDATA[Well, after hours of searching google and fucking around with my own name server, I've come to the conclusion that either A: google blows goats or B: no one has posted a decent named.conf that makes sense. I'm leaning towards B as google is god. <br />
On that note, here is my named.conf. Some things to consider, I run named in a chroot, so some things may differ if your not doing the same. (nothing should but it's worth mentioning.)<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>acl bogusnets { 0.0.0.0/8; 1.0.0.0/8; 2.0.0.0/8; 192.0.2.0/24; 224.0.0.0/3; 10.0.0.0/8; 172.16.0.0/12; };<br />
<br />
options {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;directory "/var/bind";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;version "umm, how about no";<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//forward first;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;forwarders {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;127.0.0.1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;listen-on {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;216.194.67.33;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;127.0.0.1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// to allow only specific hosts to use the DNS server:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//allow-query {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;127.0.0.1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//};<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pid-file "/var/run/named/named.pid";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;statistics-file "/var/log/named.stats";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;zone-statistics yes;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;blackhole { bogusnets; };<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;allow-recursion { 127.0.0.1; };<br />
};<br />
<br />
zone "." IN {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type hint;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file "named.ca";<br />
};<br />
<br />
zone "localhost" IN {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type master;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file "pri/localhost";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;allow-update { none; };<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;notify no;<br />
};<br />
<br />
zone "127.in-addr.arpa" IN {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type master;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file "pri/127.zone";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;allow-update { none; };<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;notify no;<br />
};</code></div></div>
<br />
Now for the explanation of what the above is. <br />
You can setup bogus networks, (ip blocks that aren't/shouldn't be in use) this I have done with acl, courtesy of imbezol. <br />
version will will give that exact response if someone checks to see which bind version you are using. <br />
The rest is pretty standard. The above zone format is what i consider the long format, and it's a pain in the ass to add/manage multiple domain names in one shot if you need to make a change. Below is an easier way of setting up zones:<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>zone "bluedevil.ca" IN { type master; file "pri/bluedevil.ca"; allow-transfer { 142.179.195.171; 68.147.154.85; }; };<br />
zone "euphoric.ca" IN { type master; file "pri/euphoric.ca"; allow-transfer { 142.179.195.171; 68.147.154.85; }; };</code></div></div>
Much simpler in my opinion. <br />
BIND is incredibly anal when it comes to the format of it's config files. Which is a good thing. I always use named-checkconf to check my config before reloading named. It works fairly well.]]></description>
			<content:encoded><![CDATA[Well, after hours of searching google and fucking around with my own name server, I've come to the conclusion that either A: google blows goats or B: no one has posted a decent named.conf that makes sense. I'm leaning towards B as google is god. <br />
On that note, here is my named.conf. Some things to consider, I run named in a chroot, so some things may differ if your not doing the same. (nothing should but it's worth mentioning.)<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>acl bogusnets { 0.0.0.0/8; 1.0.0.0/8; 2.0.0.0/8; 192.0.2.0/24; 224.0.0.0/3; 10.0.0.0/8; 172.16.0.0/12; };<br />
<br />
options {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;directory "/var/bind";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;version "umm, how about no";<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//forward first;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;forwarders {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;127.0.0.1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;listen-on {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;216.194.67.33;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;127.0.0.1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// to allow only specific hosts to use the DNS server:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//allow-query {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;127.0.0.1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//};<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pid-file "/var/run/named/named.pid";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;statistics-file "/var/log/named.stats";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;zone-statistics yes;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;blackhole { bogusnets; };<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;allow-recursion { 127.0.0.1; };<br />
};<br />
<br />
zone "." IN {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type hint;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file "named.ca";<br />
};<br />
<br />
zone "localhost" IN {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type master;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file "pri/localhost";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;allow-update { none; };<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;notify no;<br />
};<br />
<br />
zone "127.in-addr.arpa" IN {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type master;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file "pri/127.zone";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;allow-update { none; };<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;notify no;<br />
};</code></div></div>
<br />
Now for the explanation of what the above is. <br />
You can setup bogus networks, (ip blocks that aren't/shouldn't be in use) this I have done with acl, courtesy of imbezol. <br />
version will will give that exact response if someone checks to see which bind version you are using. <br />
The rest is pretty standard. The above zone format is what i consider the long format, and it's a pain in the ass to add/manage multiple domain names in one shot if you need to make a change. Below is an easier way of setting up zones:<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>zone "bluedevil.ca" IN { type master; file "pri/bluedevil.ca"; allow-transfer { 142.179.195.171; 68.147.154.85; }; };<br />
zone "euphoric.ca" IN { type master; file "pri/euphoric.ca"; allow-transfer { 142.179.195.171; 68.147.154.85; }; };</code></div></div>
Much simpler in my opinion. <br />
BIND is incredibly anal when it comes to the format of it's config files. Which is a good thing. I always use named-checkconf to check my config before reloading named. It works fairly well.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Samba: no username/password - public share config.]]></title>
			<link>http://bluedevil.ca/forum/showthread.php?tid=6</link>
			<pubDate>Thu, 19 Nov 2009 14:22:47 -0700</pubDate>
			<guid isPermaLink="false">http://bluedevil.ca/forum/showthread.php?tid=6</guid>
			<description><![CDATA[Seeing as I lost mine and spent a significant portion of time rewriting the fucking thing trying to get it to work, and google really sucked in this case. Here is my config, some things here and there have been removed for security, but it's mostly all the same shiz. Oh, and I've included a rough description of what each tidbit does, well, here and there, the odd ones anyway <img src="images/smilies/smile.gif" style="vertical-align: middle;" border="0" alt="Smile" title="Smile" /><br />
<br />
Questions/comments? let me know.<br />
<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>[global]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;workgroup = Lego<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;netbios name = reverb<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;server string =<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log file = /var/log/samba/log.%m<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max log size = 250<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#Allow which IP's to see the samba server. 192.168.1. allows 192.168.1.0/24<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hosts allow = 192.168.1.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hosts deny = ALL<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#this server will be the master for the LEGO workgroup<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local master = yes<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wins support = no<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;preserve case = yes<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;security = user<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;username map = /etc/samba/smbusers<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;encrypt passwords = yes<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;smb passwd file = /etc/samba/private/smbpasswd<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;socket options = TCP_NODELAY SO_SNDBUF=8192 SO_RCVBUF=8192<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#Specify which interface samba will run on, this can also be specified as an ip address<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;interfaces = eth0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#Binds to the specified interface only, this is not needed if you only have one interface<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bind interfaces only = yes<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dns proxy = no<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map to guest = Bad User<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;guest account = guest<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;load printers = No<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#Will stomp other servers that attempt to be the preferred master<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;preferred master = yes<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;os level = 255<br />
<br />
<br />
[homes]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;browseable = no<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writable = yes<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;guest ok = no<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;create mask = 644<br />
<br />
[server]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;comment = file server<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;guest ok = yes<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printable = no<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;browseable = yes<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;path = /srv<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public = yes<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writable = no</code></div></div>
<br />
the smbusers file contains this:<br />
nobody = guest pcguest smbguest<br />
for the guest account mapping<br />
<br />
make sure to add the guest user as well, otherwise this won't work at all<br />
smbpasswd -a -n guest<br />
<br />
That's it, you should have a working samba config with no username or password required to access /srv (change this to whatever it is your sharing) and anyone that accesses this share can't write anywhere, it's meant to be that way, if you want an uploads dir or something, make one  :shock:]]></description>
			<content:encoded><![CDATA[Seeing as I lost mine and spent a significant portion of time rewriting the fucking thing trying to get it to work, and google really sucked in this case. Here is my config, some things here and there have been removed for security, but it's mostly all the same shiz. Oh, and I've included a rough description of what each tidbit does, well, here and there, the odd ones anyway <img src="images/smilies/smile.gif" style="vertical-align: middle;" border="0" alt="Smile" title="Smile" /><br />
<br />
Questions/comments? let me know.<br />
<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>[global]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;workgroup = Lego<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;netbios name = reverb<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;server string =<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log file = /var/log/samba/log.%m<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max log size = 250<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#Allow which IP's to see the samba server. 192.168.1. allows 192.168.1.0/24<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hosts allow = 192.168.1.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hosts deny = ALL<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#this server will be the master for the LEGO workgroup<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local master = yes<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wins support = no<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;preserve case = yes<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;security = user<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;username map = /etc/samba/smbusers<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;encrypt passwords = yes<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;smb passwd file = /etc/samba/private/smbpasswd<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;socket options = TCP_NODELAY SO_SNDBUF=8192 SO_RCVBUF=8192<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#Specify which interface samba will run on, this can also be specified as an ip address<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;interfaces = eth0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#Binds to the specified interface only, this is not needed if you only have one interface<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bind interfaces only = yes<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dns proxy = no<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map to guest = Bad User<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;guest account = guest<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;load printers = No<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#Will stomp other servers that attempt to be the preferred master<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;preferred master = yes<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;os level = 255<br />
<br />
<br />
[homes]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;browseable = no<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writable = yes<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;guest ok = no<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;create mask = 644<br />
<br />
[server]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;comment = file server<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;guest ok = yes<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printable = no<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;browseable = yes<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;path = /srv<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public = yes<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writable = no</code></div></div>
<br />
the smbusers file contains this:<br />
nobody = guest pcguest smbguest<br />
for the guest account mapping<br />
<br />
make sure to add the guest user as well, otherwise this won't work at all<br />
smbpasswd -a -n guest<br />
<br />
That's it, you should have a working samba config with no username or password required to access /srv (change this to whatever it is your sharing) and anyone that accesses this share can't write anywhere, it's meant to be that way, if you want an uploads dir or something, make one  :shock:]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[gentoo rsyncd in a ramdrive]]></title>
			<link>http://bluedevil.ca/forum/showthread.php?tid=5</link>
			<pubDate>Thu, 19 Nov 2009 14:21:18 -0700</pubDate>
			<guid isPermaLink="false">http://bluedevil.ca/forum/showthread.php?tid=5</guid>
			<description><![CDATA[here's all da code for running a gentoo rsync in a ramdrive. kernel requirements are not included.<br />
<br />
/opt/gentoo-rsync/rsync-ramfs-gentoo-portage.sh<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>#!/bin/bash<br />
<br />
RSYNC="/usr/bin/rsync"<br />
OPTS="--quiet --recursive --links --perms --times --devices --compress --delete --timeout=600"<br />
SRC="rsync://masterrsync.gentoo.org/gentoo-portage"<br />
DST="/opt/gentoo-rsync/portage/"<br />
RAMFS_SRC="/opt/gentoo-rsync/portage/"<br />
RAMFS_DST="/opt/gentoo-rsync/portage-ramfs/"<br />
<br />
echo "Started update at" `date` &gt;&gt; /var/log/`basename &#36;0`.log 2&gt;&amp;1<br />
logger -t rsync "re-rsyncing the gentoo-portage tree to hard drive"<br />
&#36;{RSYNC} &#36;{OPTS} &#36;{SRC} &#36;{DST} &gt;&gt; /var/log/`basename &#36;0`.log 2&gt;&amp;1<br />
<br />
echo "Started update at" `date` &gt;&gt; /var/log/`basename &#36;0`.log 2&gt;&amp;1<br />
logger -t rsync "re-rsyncing the gentoo-portage tree from hdd to ramfs"<br />
&#36;{RSYNC} &#36;{OPTS} &#36;{RAMFS_SRC} &#36;{RAMFS_DST} &gt;&gt; /var/log/`basename &#36;0`.log 2&gt;&amp;1<br />
<br />
echo "End: "`date` &gt;&gt; /var/log/`basename &#36;0`.log 2&gt;&amp;1<br />
<br />
<br />
# some nasty cleaning stuff to kill stale PIDs<br />
/bin/kill -9 `/bin/ps --no-headers -Crsync -o etime,user,pid,command | /bin/grep "nobody&#92;|rsync" | /bin/grep "[0-9]&#92;{2&#92;}:[0-9]&#92;{2&#92;}:" |/bin/awk '{print &#36;3}'`<br />
<br />
ulimit -s unlimited</code></div></div>
<br />
/etc/init.d/local.start<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>mount -t ramfs ramfs /opt/gentoo-rsync/portage-ramfs 1&gt;&amp;2<br />
/opt/gentoo-rsync/scripts/rsync-ramfs-gentoo-portage.sh</code></div></div>
<br />
/etc/rsync/rsync.conf<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>uid = rsync<br />
gid = rsync<br />
use chroot = yes<br />
max connections = 100<br />
pid file = /var/run/rsyncd.pid<br />
motd file = /etc/rsync/rsyncd.motd<br />
transfer logging = no<br />
log format = %t %a %m %f %b<br />
syslog facility = local3<br />
timeout = 300<br />
<br />
[gentoo-x86-portage]<br />
#this entry is for compatibility<br />
path = /opt/gentoo-rsync/portage-ramfs<br />
comment = Gentoo Linux Portage tree<br />
dont compress = *<br />
<br />
[gentoo-portage]<br />
#modern versions of portage use this entry<br />
path = /opt/gentoo-rsync/portage-ramfs<br />
comment = Gentoo Linux Portage tree mirror<br />
exclude = distfiles<br />
dont compress = *<br />
#end of portage modules</code></div></div>
<br />
/etc/crontab entry<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>0,30 * * * *&nbsp;&nbsp;root /opt/gentoo-rsync/scripts/rsync-ramfs-gentoo-portage.sh</code></div></div>
]]></description>
			<content:encoded><![CDATA[here's all da code for running a gentoo rsync in a ramdrive. kernel requirements are not included.<br />
<br />
/opt/gentoo-rsync/rsync-ramfs-gentoo-portage.sh<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>#!/bin/bash<br />
<br />
RSYNC="/usr/bin/rsync"<br />
OPTS="--quiet --recursive --links --perms --times --devices --compress --delete --timeout=600"<br />
SRC="rsync://masterrsync.gentoo.org/gentoo-portage"<br />
DST="/opt/gentoo-rsync/portage/"<br />
RAMFS_SRC="/opt/gentoo-rsync/portage/"<br />
RAMFS_DST="/opt/gentoo-rsync/portage-ramfs/"<br />
<br />
echo "Started update at" `date` &gt;&gt; /var/log/`basename &#36;0`.log 2&gt;&amp;1<br />
logger -t rsync "re-rsyncing the gentoo-portage tree to hard drive"<br />
&#36;{RSYNC} &#36;{OPTS} &#36;{SRC} &#36;{DST} &gt;&gt; /var/log/`basename &#36;0`.log 2&gt;&amp;1<br />
<br />
echo "Started update at" `date` &gt;&gt; /var/log/`basename &#36;0`.log 2&gt;&amp;1<br />
logger -t rsync "re-rsyncing the gentoo-portage tree from hdd to ramfs"<br />
&#36;{RSYNC} &#36;{OPTS} &#36;{RAMFS_SRC} &#36;{RAMFS_DST} &gt;&gt; /var/log/`basename &#36;0`.log 2&gt;&amp;1<br />
<br />
echo "End: "`date` &gt;&gt; /var/log/`basename &#36;0`.log 2&gt;&amp;1<br />
<br />
<br />
# some nasty cleaning stuff to kill stale PIDs<br />
/bin/kill -9 `/bin/ps --no-headers -Crsync -o etime,user,pid,command | /bin/grep "nobody&#92;|rsync" | /bin/grep "[0-9]&#92;{2&#92;}:[0-9]&#92;{2&#92;}:" |/bin/awk '{print &#36;3}'`<br />
<br />
ulimit -s unlimited</code></div></div>
<br />
/etc/init.d/local.start<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>mount -t ramfs ramfs /opt/gentoo-rsync/portage-ramfs 1&gt;&amp;2<br />
/opt/gentoo-rsync/scripts/rsync-ramfs-gentoo-portage.sh</code></div></div>
<br />
/etc/rsync/rsync.conf<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>uid = rsync<br />
gid = rsync<br />
use chroot = yes<br />
max connections = 100<br />
pid file = /var/run/rsyncd.pid<br />
motd file = /etc/rsync/rsyncd.motd<br />
transfer logging = no<br />
log format = %t %a %m %f %b<br />
syslog facility = local3<br />
timeout = 300<br />
<br />
[gentoo-x86-portage]<br />
#this entry is for compatibility<br />
path = /opt/gentoo-rsync/portage-ramfs<br />
comment = Gentoo Linux Portage tree<br />
dont compress = *<br />
<br />
[gentoo-portage]<br />
#modern versions of portage use this entry<br />
path = /opt/gentoo-rsync/portage-ramfs<br />
comment = Gentoo Linux Portage tree mirror<br />
exclude = distfiles<br />
dont compress = *<br />
#end of portage modules</code></div></div>
<br />
/etc/crontab entry<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>0,30 * * * *&nbsp;&nbsp;root /opt/gentoo-rsync/scripts/rsync-ramfs-gentoo-portage.sh</code></div></div>
]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[boot_notify.sh]]></title>
			<link>http://bluedevil.ca/forum/showthread.php?tid=4</link>
			<pubDate>Thu, 19 Nov 2009 14:19:51 -0700</pubDate>
			<guid isPermaLink="false">http://bluedevil.ca/forum/showthread.php?tid=4</guid>
			<description><![CDATA[<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>#!/bin/bash<br />
&nbsp;&nbsp;&nbsp;&nbsp;#<br />
&nbsp;&nbsp;&nbsp;&nbsp;#*******************************************************************<br />
&nbsp;&nbsp;&nbsp;&nbsp;PATH=/usr/sbin:/usr/bin:/sbin:/bin<br />
&nbsp;&nbsp;&nbsp;&nbsp;SRVNM=`uname -n`<br />
&nbsp;&nbsp;&nbsp;&nbsp;# The next variable can be set for multiple addresses<br />
&nbsp;&nbsp;&nbsp;&nbsp;# (i.e. jsmith at yahoo.com,jsmith at hotmail.com)<br />
&nbsp;&nbsp;&nbsp;&nbsp;MAILADD=putz@somedomain.com<br />
&nbsp;&nbsp;&nbsp;&nbsp;mail &#36;MAILADD -s "Boot of &#36;SRVNM" &lt;&lt;EOF<br />
&nbsp;&nbsp;&nbsp;&nbsp;From: &#36;0<br />
&nbsp;&nbsp;&nbsp;&nbsp;To: &#36;MAILADD<br />
&nbsp;&nbsp;&nbsp;&nbsp;Subject: Boot of &#36;SRVNM<br />
&nbsp;&nbsp;&nbsp;&nbsp;&#36;SRVNM has booted up.<br />
&nbsp;&nbsp;&nbsp;&nbsp;If this is news to you, please investigate.<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;`date`<br />
&nbsp;&nbsp;&nbsp;&nbsp;`/usr/local/bin/sysinfo281.05.pl`<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;`ifconfig`<br />
&nbsp;&nbsp;&nbsp;&nbsp;EOF<br />
&nbsp;&nbsp;&nbsp;&nbsp;exit 0</code></div></div>
]]></description>
			<content:encoded><![CDATA[<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>#!/bin/bash<br />
&nbsp;&nbsp;&nbsp;&nbsp;#<br />
&nbsp;&nbsp;&nbsp;&nbsp;#*******************************************************************<br />
&nbsp;&nbsp;&nbsp;&nbsp;PATH=/usr/sbin:/usr/bin:/sbin:/bin<br />
&nbsp;&nbsp;&nbsp;&nbsp;SRVNM=`uname -n`<br />
&nbsp;&nbsp;&nbsp;&nbsp;# The next variable can be set for multiple addresses<br />
&nbsp;&nbsp;&nbsp;&nbsp;# (i.e. jsmith at yahoo.com,jsmith at hotmail.com)<br />
&nbsp;&nbsp;&nbsp;&nbsp;MAILADD=putz@somedomain.com<br />
&nbsp;&nbsp;&nbsp;&nbsp;mail &#36;MAILADD -s "Boot of &#36;SRVNM" &lt;&lt;EOF<br />
&nbsp;&nbsp;&nbsp;&nbsp;From: &#36;0<br />
&nbsp;&nbsp;&nbsp;&nbsp;To: &#36;MAILADD<br />
&nbsp;&nbsp;&nbsp;&nbsp;Subject: Boot of &#36;SRVNM<br />
&nbsp;&nbsp;&nbsp;&nbsp;&#36;SRVNM has booted up.<br />
&nbsp;&nbsp;&nbsp;&nbsp;If this is news to you, please investigate.<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;`date`<br />
&nbsp;&nbsp;&nbsp;&nbsp;`/usr/local/bin/sysinfo281.05.pl`<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;`ifconfig`<br />
&nbsp;&nbsp;&nbsp;&nbsp;EOF<br />
&nbsp;&nbsp;&nbsp;&nbsp;exit 0</code></div></div>
]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[vpenis]]></title>
			<link>http://bluedevil.ca/forum/showthread.php?tid=3</link>
			<pubDate>Thu, 19 Nov 2009 14:11:37 -0700</pubDate>
			<guid isPermaLink="false">http://bluedevil.ca/forum/showthread.php?tid=3</guid>
			<description><![CDATA[<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>#!/bin/sh<br />
echo -n "`hostname`'s vpenis: "<br />
echo `uptime|grep days|sed 's/.*up &#92;([0-9]*&#92;) day.*/&#92;1&#92;/10+/'; cat /proc/cpuinfo|grep '^cpu MHz'|awk '{print &#36;4"/30 +";}';free|grep '^Mem'|awk '{print &#36;3"/1024/3+"}'; df -P -k -x nfs -x smbfs | grep -v '(1k|1024)-blocks' | awk '{if (&#36;1 ~ "/dev/(scsi|sd)"){ s+= &#36;2} s+= &#36;2;} END {print s/1024/50"/15+70";}'`|bc|sed 's/&#92;(.&#36;&#92;)/.&#92;1cm/'</code></div></div>
]]></description>
			<content:encoded><![CDATA[<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>#!/bin/sh<br />
echo -n "`hostname`'s vpenis: "<br />
echo `uptime|grep days|sed 's/.*up &#92;([0-9]*&#92;) day.*/&#92;1&#92;/10+/'; cat /proc/cpuinfo|grep '^cpu MHz'|awk '{print &#36;4"/30 +";}';free|grep '^Mem'|awk '{print &#36;3"/1024/3+"}'; df -P -k -x nfs -x smbfs | grep -v '(1k|1024)-blocks' | awk '{if (&#36;1 ~ "/dev/(scsi|sd)"){ s+= &#36;2} s+= &#36;2;} END {print s/1024/50"/15+70";}'`|bc|sed 's/&#92;(.&#36;&#92;)/.&#92;1cm/'</code></div></div>
]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[fast-rdns.pl]]></title>
			<link>http://bluedevil.ca/forum/showthread.php?tid=2</link>
			<pubDate>Thu, 19 Nov 2009 14:10:44 -0700</pubDate>
			<guid isPermaLink="false">http://bluedevil.ca/forum/showthread.php?tid=2</guid>
			<description><![CDATA[<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>#!/usr/local/bin/perl5.8.5<br />
<br />
# fast-rdns.pl -&nbsp;&nbsp;rdns-scan the living shit out of other networks<br />
# V1.0&nbsp;&nbsp;- 20060729<br />
# V1.01 - 20060731 chop off trailing dot in output of all hostnames<br />
# V1.02 - 20060809 only return PTR records, not CNAME (classless delegations)<br />
# V1.1&nbsp;&nbsp;- 20070211 accept single IP numbers and entire /8 (was /9) as argument, check sanity of argument<br />
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add -b (batch mode) and -w (write-to-file) output modes<br />
# V1.2&nbsp;&nbsp;- 20070430 new -i and -s options (the latter remains to be tested on machines with multiple IPs)<br />
# V1.3&nbsp;&nbsp;- 20070810 new -p and -d options<br />
<br />
# fast rDNS scanner - (C)2006,2007 Kai Schlichting/spamshield.org<br />
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; no warranties<br />
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; no liabilities<br />
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this program is a loaded, unsecured firearm with hairline trigger<br />
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this program will negatively effect or destroy everything it gets in contact with<br />
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;when run - including, but not limited to the universe its presently in<br />
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; you've been warned.<br />
<br />
<br />
use Net::DNS;&nbsp;&nbsp; # if you don't have this, you are not the target audience for this program<br />
use Net::CIDR;&nbsp;&nbsp;# 'perl -MCPAN -e shell' and enter 'install Net::CIDR' if you don't have this<br />
select(STDOUT); &#36;| = 1; # unbuffered output<br />
<br />
# DNS resolver parameters<br />
my &#36;retries = 4; # number of tries<br />
my &#36;retrans = 3; # retransmission interval in secs<br />
my &#36;timeout_block = 10; # don't take longer than this for any answer in entire /24<br />
# my &#36;timeout = 6; # UDP timeout<br />
my &#36;interval = 1; # chunking interval<br />
<br />
my &#36;block;<br />
local &#36;res;<br />
my &#36;net;<br />
my &#36;prefix;<br />
local &#36;loop_inc = 1; # default<br />
local &#36;verbose = 1; # default<br />
<br />
my &#36;Usage = "usage: &#36;0 [-w] [-q] [-i &lt;secs&gt;] [-t &lt;secs&gt;] [-p port] [-d server] [-s src_ip] [-b &lt;file&gt;] [-f &lt;N&gt;] [network/prefix]&#92;n" .<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"&#92;tnetwork/prefix example: 192.168.0.0/24 will scan 192.168.0.0 - 192.168.0.255&#92;n" .<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"&#92;t-q : do not print errors like SERVFAIL or TIMEOUT&#92;n" .<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"&#92;t-t &lt;secs&gt; : timeout in seconds for for any given lookup: &#92;(default:&#36;timeout_block&#92;)&#92;n" .<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"&#92;t-i &lt;secs&gt; : wait time before checking for anwers in /24 block &#92;(default:&#36;interval&#92;)&#92;n" .<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"&#92;t-f &lt;N&gt; : will look up every Nth &#92;(default:1&#92;) IP, only&#92;n" .<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"&#92;t-b &lt;file&gt; : Batch mode. Implies -w . Read network/prefixes list from &lt;file&gt; only.&#92;n" .<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"&#92;t-s src_ip : use given source IP for queries&#92;n" .<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"&#92;t-p port : ask resolvers on specified UDP port (default: 53)&#92;n" .<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"&#92;t-d server : IP address of server to use for resolution&#92;n" .<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"&#92;t-w : write output to files in current working directory.&#92;n" .<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"&#92;t&nbsp;&nbsp;&nbsp;&nbsp; Example: 192.168.0.0/24 will be written to 192.168.0.0_24.rdns&#92;n" ;<br />
<br />
use Getopt::Std;<br />
my %opts;<br />
<br />
getopts('qf:t:b:ws:i:p:d:', %opts) or die &#36;Usage;<br />
<br />
&#36;loop_inc = &#36;opt_f if &#36;opt_f;<br />
&#36;verbose = 0 if &#36;opt_q;<br />
&#36;timeout_block = &#36;opt_t if &#36;opt_t;<br />
&#36;file_in = &#36;opt_b if &#36;opt_b;<br />
# &#36;opt_w is true for -w mode<br />
&#36;interval = &#36;opt_i if &#36;opt_i;<br />
&#36;src_ip = &#36;opt_s if &#36;opt_s;<br />
&#36;dst_server = "67.18.254.5";<br />
&#36;dst_server = &#36;opt_d if &#36;opt_d;<br />
if (&#36;opt_p) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;dst_port = &#36;opt_p;<br />
} else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;dst_port = 53;<br />
}<br />
<br />
my &#36;netblock;<br />
my @lines;<br />
<br />
if (&#36;opt_b) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# we are in batch mode<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (-r &#36;file_in) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "Starting in batch mode, reading from file &#36;file_in&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( open (FH, "&lt; &#36;file_in") ) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my &#36;line;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while (&#36;line = &lt;FH&gt;) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chomp &#36;line;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# print "Read from file: &#36;line&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;push @lines, &#36;line;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;close FH;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;die "Tried to open, but can't read file &#36;file_in&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;die "Input file &#36;file_in is not readable for you - permissions?&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
} else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# no batchmode - use netblock given on command line<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (&#36;#ARGV != 0) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print &#36;Usage;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit 1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;push @lines,&#36;ARGV[0] ; # our list is only the command-line argument<br />
}<br />
<br />
<br />
if (&#36;dst_server) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;res = Net::DNS::Resolver-&gt;new(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nameservers =&gt; [&#36;dst_server],<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;recurse =&gt; 1,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retry =&gt; &#36;retries,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retrans =&gt; &#36;retrans,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# udp_timeout =&gt; &#36;timeout,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;persistent_udp =&gt; 1,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;srcaddr =&gt; &#36;src_ip,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;port =&gt; &#36;dst_port,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br />
} else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;res = Net::DNS::Resolver-&gt;new(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;recurse =&gt; 1,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retry =&gt; &#36;retries,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retrans =&gt; &#36;retrans,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# udp_timeout =&gt; &#36;timeout,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;persistent_udp =&gt; 1,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;srcaddr =&gt; &#36;src_ip,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;port =&gt; &#36;dst_port,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br />
}<br />
<br />
NETBLOCK:<br />
foreach &#36;netblock (@lines) {<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(&#36;net,&#36;prefix) = split ('/',&#36;netblock);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unless (&#36;net =~ /^&#92;d+&#92;.&#92;d+&#92;.&#92;d+&#92;.&#92;d+&#36;/) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "&#36;net is not an IP or network number - skipping &#36;netblock&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;next NETBLOCK;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (&#36;prefix == 0) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# it's a host<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;prefix = 32;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;netblock .= "/32";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (&#36;prefix &lt; 8) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "Scanning blocks larger than /8 not supported: &#36;netblock skipped.";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;next NETBLOCK;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (&#36;prefix &gt; 32) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "What do you mean, with /&#36;prefix? &#36;netblock skipped";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;next NETBLOCK;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "Now working on: &#36;net/&#36;prefix&#92;n";<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ((&#36;opt_b) || (&#36;opt_w) ) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# output to file<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my &#36;out_file = &#36;net."_".&#36;prefix.".rdns";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (open (FH , "&gt; &#36;out_file")) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "Writing output to &#36;out_file&#92;n" if &#36;verbose;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "Could not open file for output: &#36;out_file - skipping &#36;netblock&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;next NETBLOCK;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;select (FH); &#36;| = 1; # unbuffered output<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print STDOUT "# Stepping through &#36;netblock every &#36;loop_inc IPs&#92;n" if &#36;verbose;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (&#36;opt_b || &#36;opt_w) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "# Stepping through &#36;netblock every &#36;loop_inc IPs&#92;n" if &#36;verbose;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my &#36;s_time = time;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;explode_range(&#36;netblock); # recursive explosion of CIDR block<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my &#36;elap = (time) - &#36;s_time;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print STDOUT "# Took &#36;elap seconds to scan &#36;netblock with stepsize &#36;loop_inc&#92;n" if &#36;verbose;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (&#36;opt_b || &#36;opt_w) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "# Took &#36;elap seconds to scan &#36;netblock with stepsize &#36;loop_inc&#92;n" if &#36;verbose;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (&#36;opt_b || &#36;opt_w) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;select (STDOUT); # switch back<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;close FH;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
} # foreach &#36;netblock<br />
<br />
exit 0;<br />
<br />
##############<br />
<br />
sub explode_range {<br />
<br />
 my &#36;block = &#36;_[0];<br />
 my (&#36;network,&#36;prefix) = split ('/',&#36;block);<br />
 my @list;<br />
 my &#36;net;<br />
 my &#36;loc;<br />
 my &#36;ans;<br />
 my @query;<br />
 my @query_in;<br />
 my &#36;out;<br />
 my &#36;data;<br />
 my &#36;start;<br />
 my &#36;loop_x;<br />
<br />
 if (&#36;prefix &lt; 17) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# getting a list of "A.B" (/16) prefixes out of this<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@list = Net::CIDR::cidr2octets(&#36;block);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach &#36;net (@list) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# print "Exploding block &#36;block to /24's&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;explode_range("&#36;net.0.0/17"); # that'll get us /24's<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;explode_range("&#36;net.128.0/17"); # that'll get us /24's<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 0;<br />
 }<br />
<br />
 if (&#36;prefix &lt; 24) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# getting a list of "A.B.C" (/24) prefixes out of this<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@list = Net::CIDR::cidr2octets(&#36;block);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach &#36;net (@list) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# print "Exploding &#36;block to /24's&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;explode_range("&#36;net.0/24"); # that'll get us /24's<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 0;<br />
 }<br />
<br />
 if (&#36;prefix == 24) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# generate list of 256 /32's<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( &#36;network =~ /^(&#92;d+&#92;.&#92;d+&#92;.&#92;d+)&#92;.(&#92;d+)&#36;/ ) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my &#36;net = &#36;1; # the first 3 octets: A.B.C<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@list = Net::CIDR::cidr2octets("&#36;net.0/25");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;push @list, Net::CIDR::cidr2octets("&#36;net.128/25");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
 } else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # ok, we are at the lowest level (/25 or longer prefix - will get all /32's<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @list = Net::CIDR::cidr2octets(&#36;block);<br />
 }<br />
<br />
 # send all queries in background /w async DNS<br />
<br />
 &#36;loop_x = 1; # skip possible IPs<br />
<br />
 QUERY:<br />
 foreach &#36;net (@list) {<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;loop_x -= 1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (! &#36;loop_x) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# do this run, reset counter<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;loop_x = &#36;loop_inc;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# skip this run<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;next QUERY;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( &#36;net =~ /^(&#92;d+&#92;.&#92;d+&#92;.&#92;d+)&#92;.(&#92;d+)&#36;/ ) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;loc = &#36;2; # last octet<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# print "working: octet &#36;loc, sending query &#36;net&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;query_in[&#36;loc] = &#36;net;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;query[&#36;loc] = &#36;res-&gt;bgsend(&#36;net);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "# could not extract last octet from IP &#36;net&#92;n" if &#36;verbose;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
 }<br />
<br />
 &#36;start = time;<br />
<br />
 # now retrieve DNS answers - sending hopefully took at least as long to get the answers<br />
<br />
 &#36;loop_x = 1; # skip possible IPs<br />
<br />
 RESOLVE:<br />
 foreach &#36;net (@list) {<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;loop_x -= 1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (! &#36;loop_x) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# do this run, reset counter<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;loop_x = &#36;loop_inc;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# skip this run<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;next RESOLVE;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;net =~ /^(&#92;d+&#92;.&#92;d+&#92;.&#92;d+)&#92;.(&#92;d+)&#36;/ ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;loc = &#36;2;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while (! &#36;res-&gt;bgisready(&#36;query[&#36;loc]) ) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# print "Still waiting for query &#36;loc&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( ( ( (time) - &#36;start ) ) &gt;= &#36;timeout_block ) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# print "aborting wait for query &#36;net&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "&#36;net&nbsp;&nbsp;(ERROR:TIMEOUT)&#92;n" if &#36;verbose;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;next RESOLVE;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sleep &#36;interval;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;ans = &#36;res-&gt;bgread(&#36;query[&#36;loc]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# &#36;ans-&gt;print; # debug from hell<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (defined &#36;ans) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my &#36;had_any = 0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach &#36;out (&#36;ans-&gt;answer) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my &#36;type = &#36;out-&gt;type;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# print "&#36;loc: type: &#36;type&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# @txt = &#36;out-&gt;string;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unless (&#36;type eq "PTR")&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# it's a CNAME record (classful delegation) - skip this, we get the PTR as the next answer<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;next;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my @txt = &#36;out-&gt;rdatastr;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach &#36;data (@txt) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# print "&#36;query_in[&#36;loc]: type: &#36;type data: &#36;data&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;data =~ s/&#92;.&#36;// ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "&#36;net&nbsp;&nbsp;&#36;data&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;had_any = 1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unless (&#36;had_any) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my &#36;err = &#36;res-&gt;errorstring;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (&#36;err eq "NXDOMAIN") {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# print "&#36;net&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "&#36;net&nbsp;&nbsp;(ERROR:&#36;err)&#92;n" if &#36;verbose;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my &#36;err = &#36;res-&gt;errorstring;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (&#36;err eq "NXDOMAIN") {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# print "&#36;net&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "&#36;net&nbsp;&nbsp;(ERROR:&#36;err)&#92;n" if &#36;verbose;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# print "&#36;net&nbsp;&nbsp;(SRVFAIL)&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
 }<br />
<br />
}<br />
<br />
########################</code></div></div>
]]></description>
			<content:encoded><![CDATA[<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>#!/usr/local/bin/perl5.8.5<br />
<br />
# fast-rdns.pl -&nbsp;&nbsp;rdns-scan the living shit out of other networks<br />
# V1.0&nbsp;&nbsp;- 20060729<br />
# V1.01 - 20060731 chop off trailing dot in output of all hostnames<br />
# V1.02 - 20060809 only return PTR records, not CNAME (classless delegations)<br />
# V1.1&nbsp;&nbsp;- 20070211 accept single IP numbers and entire /8 (was /9) as argument, check sanity of argument<br />
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add -b (batch mode) and -w (write-to-file) output modes<br />
# V1.2&nbsp;&nbsp;- 20070430 new -i and -s options (the latter remains to be tested on machines with multiple IPs)<br />
# V1.3&nbsp;&nbsp;- 20070810 new -p and -d options<br />
<br />
# fast rDNS scanner - (C)2006,2007 Kai Schlichting/spamshield.org<br />
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; no warranties<br />
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; no liabilities<br />
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this program is a loaded, unsecured firearm with hairline trigger<br />
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this program will negatively effect or destroy everything it gets in contact with<br />
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;when run - including, but not limited to the universe its presently in<br />
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; you've been warned.<br />
<br />
<br />
use Net::DNS;&nbsp;&nbsp; # if you don't have this, you are not the target audience for this program<br />
use Net::CIDR;&nbsp;&nbsp;# 'perl -MCPAN -e shell' and enter 'install Net::CIDR' if you don't have this<br />
select(STDOUT); &#36;| = 1; # unbuffered output<br />
<br />
# DNS resolver parameters<br />
my &#36;retries = 4; # number of tries<br />
my &#36;retrans = 3; # retransmission interval in secs<br />
my &#36;timeout_block = 10; # don't take longer than this for any answer in entire /24<br />
# my &#36;timeout = 6; # UDP timeout<br />
my &#36;interval = 1; # chunking interval<br />
<br />
my &#36;block;<br />
local &#36;res;<br />
my &#36;net;<br />
my &#36;prefix;<br />
local &#36;loop_inc = 1; # default<br />
local &#36;verbose = 1; # default<br />
<br />
my &#36;Usage = "usage: &#36;0 [-w] [-q] [-i &lt;secs&gt;] [-t &lt;secs&gt;] [-p port] [-d server] [-s src_ip] [-b &lt;file&gt;] [-f &lt;N&gt;] [network/prefix]&#92;n" .<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"&#92;tnetwork/prefix example: 192.168.0.0/24 will scan 192.168.0.0 - 192.168.0.255&#92;n" .<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"&#92;t-q : do not print errors like SERVFAIL or TIMEOUT&#92;n" .<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"&#92;t-t &lt;secs&gt; : timeout in seconds for for any given lookup: &#92;(default:&#36;timeout_block&#92;)&#92;n" .<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"&#92;t-i &lt;secs&gt; : wait time before checking for anwers in /24 block &#92;(default:&#36;interval&#92;)&#92;n" .<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"&#92;t-f &lt;N&gt; : will look up every Nth &#92;(default:1&#92;) IP, only&#92;n" .<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"&#92;t-b &lt;file&gt; : Batch mode. Implies -w . Read network/prefixes list from &lt;file&gt; only.&#92;n" .<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"&#92;t-s src_ip : use given source IP for queries&#92;n" .<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"&#92;t-p port : ask resolvers on specified UDP port (default: 53)&#92;n" .<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"&#92;t-d server : IP address of server to use for resolution&#92;n" .<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"&#92;t-w : write output to files in current working directory.&#92;n" .<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"&#92;t&nbsp;&nbsp;&nbsp;&nbsp; Example: 192.168.0.0/24 will be written to 192.168.0.0_24.rdns&#92;n" ;<br />
<br />
use Getopt::Std;<br />
my %opts;<br />
<br />
getopts('qf:t:b:ws:i:p:d:', %opts) or die &#36;Usage;<br />
<br />
&#36;loop_inc = &#36;opt_f if &#36;opt_f;<br />
&#36;verbose = 0 if &#36;opt_q;<br />
&#36;timeout_block = &#36;opt_t if &#36;opt_t;<br />
&#36;file_in = &#36;opt_b if &#36;opt_b;<br />
# &#36;opt_w is true for -w mode<br />
&#36;interval = &#36;opt_i if &#36;opt_i;<br />
&#36;src_ip = &#36;opt_s if &#36;opt_s;<br />
&#36;dst_server = "67.18.254.5";<br />
&#36;dst_server = &#36;opt_d if &#36;opt_d;<br />
if (&#36;opt_p) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;dst_port = &#36;opt_p;<br />
} else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;dst_port = 53;<br />
}<br />
<br />
my &#36;netblock;<br />
my @lines;<br />
<br />
if (&#36;opt_b) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# we are in batch mode<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (-r &#36;file_in) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "Starting in batch mode, reading from file &#36;file_in&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( open (FH, "&lt; &#36;file_in") ) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my &#36;line;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while (&#36;line = &lt;FH&gt;) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chomp &#36;line;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# print "Read from file: &#36;line&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;push @lines, &#36;line;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;close FH;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;die "Tried to open, but can't read file &#36;file_in&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;die "Input file &#36;file_in is not readable for you - permissions?&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
} else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# no batchmode - use netblock given on command line<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (&#36;#ARGV != 0) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print &#36;Usage;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit 1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;push @lines,&#36;ARGV[0] ; # our list is only the command-line argument<br />
}<br />
<br />
<br />
if (&#36;dst_server) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;res = Net::DNS::Resolver-&gt;new(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nameservers =&gt; [&#36;dst_server],<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;recurse =&gt; 1,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retry =&gt; &#36;retries,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retrans =&gt; &#36;retrans,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# udp_timeout =&gt; &#36;timeout,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;persistent_udp =&gt; 1,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;srcaddr =&gt; &#36;src_ip,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;port =&gt; &#36;dst_port,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br />
} else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;res = Net::DNS::Resolver-&gt;new(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;recurse =&gt; 1,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retry =&gt; &#36;retries,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retrans =&gt; &#36;retrans,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# udp_timeout =&gt; &#36;timeout,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;persistent_udp =&gt; 1,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;srcaddr =&gt; &#36;src_ip,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;port =&gt; &#36;dst_port,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br />
}<br />
<br />
NETBLOCK:<br />
foreach &#36;netblock (@lines) {<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(&#36;net,&#36;prefix) = split ('/',&#36;netblock);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unless (&#36;net =~ /^&#92;d+&#92;.&#92;d+&#92;.&#92;d+&#92;.&#92;d+&#36;/) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "&#36;net is not an IP or network number - skipping &#36;netblock&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;next NETBLOCK;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (&#36;prefix == 0) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# it's a host<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;prefix = 32;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;netblock .= "/32";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (&#36;prefix &lt; 8) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "Scanning blocks larger than /8 not supported: &#36;netblock skipped.";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;next NETBLOCK;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (&#36;prefix &gt; 32) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "What do you mean, with /&#36;prefix? &#36;netblock skipped";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;next NETBLOCK;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "Now working on: &#36;net/&#36;prefix&#92;n";<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ((&#36;opt_b) || (&#36;opt_w) ) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# output to file<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my &#36;out_file = &#36;net."_".&#36;prefix.".rdns";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (open (FH , "&gt; &#36;out_file")) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "Writing output to &#36;out_file&#92;n" if &#36;verbose;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "Could not open file for output: &#36;out_file - skipping &#36;netblock&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;next NETBLOCK;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;select (FH); &#36;| = 1; # unbuffered output<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print STDOUT "# Stepping through &#36;netblock every &#36;loop_inc IPs&#92;n" if &#36;verbose;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (&#36;opt_b || &#36;opt_w) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "# Stepping through &#36;netblock every &#36;loop_inc IPs&#92;n" if &#36;verbose;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my &#36;s_time = time;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;explode_range(&#36;netblock); # recursive explosion of CIDR block<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my &#36;elap = (time) - &#36;s_time;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print STDOUT "# Took &#36;elap seconds to scan &#36;netblock with stepsize &#36;loop_inc&#92;n" if &#36;verbose;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (&#36;opt_b || &#36;opt_w) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "# Took &#36;elap seconds to scan &#36;netblock with stepsize &#36;loop_inc&#92;n" if &#36;verbose;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (&#36;opt_b || &#36;opt_w) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;select (STDOUT); # switch back<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;close FH;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
} # foreach &#36;netblock<br />
<br />
exit 0;<br />
<br />
##############<br />
<br />
sub explode_range {<br />
<br />
 my &#36;block = &#36;_[0];<br />
 my (&#36;network,&#36;prefix) = split ('/',&#36;block);<br />
 my @list;<br />
 my &#36;net;<br />
 my &#36;loc;<br />
 my &#36;ans;<br />
 my @query;<br />
 my @query_in;<br />
 my &#36;out;<br />
 my &#36;data;<br />
 my &#36;start;<br />
 my &#36;loop_x;<br />
<br />
 if (&#36;prefix &lt; 17) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# getting a list of "A.B" (/16) prefixes out of this<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@list = Net::CIDR::cidr2octets(&#36;block);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach &#36;net (@list) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# print "Exploding block &#36;block to /24's&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;explode_range("&#36;net.0.0/17"); # that'll get us /24's<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;explode_range("&#36;net.128.0/17"); # that'll get us /24's<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 0;<br />
 }<br />
<br />
 if (&#36;prefix &lt; 24) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# getting a list of "A.B.C" (/24) prefixes out of this<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@list = Net::CIDR::cidr2octets(&#36;block);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach &#36;net (@list) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# print "Exploding &#36;block to /24's&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;explode_range("&#36;net.0/24"); # that'll get us /24's<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 0;<br />
 }<br />
<br />
 if (&#36;prefix == 24) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# generate list of 256 /32's<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( &#36;network =~ /^(&#92;d+&#92;.&#92;d+&#92;.&#92;d+)&#92;.(&#92;d+)&#36;/ ) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my &#36;net = &#36;1; # the first 3 octets: A.B.C<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@list = Net::CIDR::cidr2octets("&#36;net.0/25");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;push @list, Net::CIDR::cidr2octets("&#36;net.128/25");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
 } else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # ok, we are at the lowest level (/25 or longer prefix - will get all /32's<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @list = Net::CIDR::cidr2octets(&#36;block);<br />
 }<br />
<br />
 # send all queries in background /w async DNS<br />
<br />
 &#36;loop_x = 1; # skip possible IPs<br />
<br />
 QUERY:<br />
 foreach &#36;net (@list) {<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;loop_x -= 1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (! &#36;loop_x) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# do this run, reset counter<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;loop_x = &#36;loop_inc;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# skip this run<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;next QUERY;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( &#36;net =~ /^(&#92;d+&#92;.&#92;d+&#92;.&#92;d+)&#92;.(&#92;d+)&#36;/ ) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;loc = &#36;2; # last octet<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# print "working: octet &#36;loc, sending query &#36;net&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;query_in[&#36;loc] = &#36;net;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;query[&#36;loc] = &#36;res-&gt;bgsend(&#36;net);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "# could not extract last octet from IP &#36;net&#92;n" if &#36;verbose;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
 }<br />
<br />
 &#36;start = time;<br />
<br />
 # now retrieve DNS answers - sending hopefully took at least as long to get the answers<br />
<br />
 &#36;loop_x = 1; # skip possible IPs<br />
<br />
 RESOLVE:<br />
 foreach &#36;net (@list) {<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;loop_x -= 1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (! &#36;loop_x) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# do this run, reset counter<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;loop_x = &#36;loop_inc;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# skip this run<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;next RESOLVE;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;net =~ /^(&#92;d+&#92;.&#92;d+&#92;.&#92;d+)&#92;.(&#92;d+)&#36;/ ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;loc = &#36;2;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while (! &#36;res-&gt;bgisready(&#36;query[&#36;loc]) ) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# print "Still waiting for query &#36;loc&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( ( ( (time) - &#36;start ) ) &gt;= &#36;timeout_block ) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# print "aborting wait for query &#36;net&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "&#36;net&nbsp;&nbsp;(ERROR:TIMEOUT)&#92;n" if &#36;verbose;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;next RESOLVE;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sleep &#36;interval;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;ans = &#36;res-&gt;bgread(&#36;query[&#36;loc]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# &#36;ans-&gt;print; # debug from hell<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (defined &#36;ans) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my &#36;had_any = 0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach &#36;out (&#36;ans-&gt;answer) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my &#36;type = &#36;out-&gt;type;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# print "&#36;loc: type: &#36;type&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# @txt = &#36;out-&gt;string;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unless (&#36;type eq "PTR")&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# it's a CNAME record (classful delegation) - skip this, we get the PTR as the next answer<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;next;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my @txt = &#36;out-&gt;rdatastr;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach &#36;data (@txt) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# print "&#36;query_in[&#36;loc]: type: &#36;type data: &#36;data&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;data =~ s/&#92;.&#36;// ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "&#36;net&nbsp;&nbsp;&#36;data&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;had_any = 1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unless (&#36;had_any) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my &#36;err = &#36;res-&gt;errorstring;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (&#36;err eq "NXDOMAIN") {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# print "&#36;net&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "&#36;net&nbsp;&nbsp;(ERROR:&#36;err)&#92;n" if &#36;verbose;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my &#36;err = &#36;res-&gt;errorstring;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (&#36;err eq "NXDOMAIN") {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# print "&#36;net&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "&#36;net&nbsp;&nbsp;(ERROR:&#36;err)&#92;n" if &#36;verbose;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# print "&#36;net&nbsp;&nbsp;(SRVFAIL)&#92;n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
 }<br />
<br />
}<br />
<br />
########################</code></div></div>
]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[My 1811w home router config]]></title>
			<link>http://bluedevil.ca/forum/showthread.php?tid=1</link>
			<pubDate>Thu, 19 Nov 2009 14:08:25 -0700</pubDate>
			<guid isPermaLink="false">http://bluedevil.ca/forum/showthread.php?tid=1</guid>
			<description><![CDATA[<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>Current configuration : 10490 bytes<br />
!<br />
! Last configuration change at 16:50:29 MST Sun Nov 15 2009 by rootme<br />
!<br />
version 15.0<br />
service nagle<br />
no service pad<br />
service tcp-keepalives-in<br />
service tcp-keepalives-out<br />
service timestamps debug datetime msec localtime show-timezone<br />
service timestamps log datetime msec localtime show-timezone<br />
service password-encryption<br />
service sequence-numbers<br />
!<br />
hostname gw<br />
!<br />
boot-start-marker<br />
boot-end-marker<br />
!<br />
logging buffered 4096<br />
enable secret 5 #############################<br />
!<br />
aaa new-model<br />
!<br />
!<br />
aaa group server radius rad_eap<br />
!<br />
aaa group server radius rad_mac<br />
!<br />
aaa group server radius rad_acct<br />
!<br />
aaa group server radius rad_admin<br />
!<br />
aaa group server tacacs+ tac_admin<br />
!<br />
aaa group server radius rad_pmip<br />
!<br />
aaa group server radius dummy<br />
!<br />
aaa authentication login local_authen local<br />
aaa authentication login eap_methods group rad_eap<br />
aaa authentication login mac_methods local<br />
aaa authorization exec local_author local<br />
aaa authorization ipmobile default group rad_pmip<br />
!<br />
!<br />
!<br />
!<br />
!<br />
aaa session-id common<br />
!<br />
!<br />
!<br />
clock timezone MST -7<br />
!<br />
crypto pki trustpoint TP-self-signed-2547479397<br />
**removed*!<br />
!<br />
crypto pki certificate chain TP-self-signed-2547479397<br />
**removed*<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;quit<br />
dot11 syslog<br />
!<br />
dot11 ssid baxterit<br />
 max-associations 7<br />
 authentication open<br />
 guest-mode<br />
 wpa-psk ascii 7 101951495247425954537C<br />
!<br />
no ip source-route<br />
!<br />
!<br />
no ip dhcp use vrf connected<br />
ip dhcp excluded-address 10.10.10.1 10.10.10.12<br />
!<br />
ip dhcp pool home-pool<br />
&nbsp;&nbsp; import all<br />
&nbsp;&nbsp; network 10.10.10.0 255.255.255.0<br />
&nbsp;&nbsp; default-router 10.10.10.1<br />
&nbsp;&nbsp; dns-server 64.59.184.13 64.59.184.15 64.59.135.133 64.59.135.135<br />
&nbsp;&nbsp; domain-name baxterit.net<br />
&nbsp;&nbsp; netbios-name-server 10.10.10.4<br />
&nbsp;&nbsp; lease 7<br />
!<br />
!<br />
ip cef<br />
no ip bootp server<br />
ip domain name baxterit.net<br />
no ipv6 cef<br />
!<br />
multilink bundle-name authenticated<br />
!<br />
!<br />
!<br />
license udi pid CISCO1811W-AG-A/K9 sn FHK111011P7<br />
archive<br />
 log config<br />
&nbsp;&nbsp;hidekeys<br />
!<br />
spanning-tree portfast bpduguard<br />
username rootme **removed*<br />
!<br />
!<br />
!<br />
class-map match-any HOME-Transactional-1<br />
 match&nbsp;&nbsp;dscp af21<br />
 match&nbsp;&nbsp;dscp af22<br />
 match&nbsp;&nbsp;dscp af23<br />
class-map match-any HOME-Signaling-1<br />
 match&nbsp;&nbsp;dscp cs3<br />
 match&nbsp;&nbsp;dscp af31<br />
class-map match-any HOME-Routing-1<br />
 match&nbsp;&nbsp;dscp cs6<br />
class-map match-any HOME-Management-1<br />
 match&nbsp;&nbsp;dscp cs2<br />
!<br />
!<br />
policy-map HOME-QoS-Policy-2<br />
policy-map HOME-QoS-Policy-1<br />
 class HOME-Signaling-1<br />
&nbsp;&nbsp;&nbsp;&nbsp;bandwidth percent 5<br />
 class HOME-Routing-1<br />
&nbsp;&nbsp;&nbsp;&nbsp;bandwidth percent 5<br />
 class HOME-Management-1<br />
&nbsp;&nbsp;&nbsp;&nbsp;bandwidth percent 5<br />
 class HOME-Transactional-1<br />
&nbsp;&nbsp;&nbsp;&nbsp;bandwidth percent 5<br />
 class class-default<br />
&nbsp;&nbsp;&nbsp;&nbsp;fair-queue<br />
&nbsp;&nbsp;&nbsp;&nbsp; random-detect<br />
!<br />
!<br />
!<br />
!<br />
bridge irb<br />
!<br />
!<br />
!<br />
!<br />
interface Tunnel0<br />
 description Hurricane Electric IPv6 Tunnel Broker<br />
 no ip address<br />
 ipv6 address 2001:470:A:116::2/64<br />
 ipv6 enable<br />
 tunnel source MY_IP<br />
 tunnel mode ipv6ip<br />
 tunnel destination 216.218.226.238<br />
 !<br />
!<br />
interface Dot11Radio0<br />
 description Wireless<br />
 no ip address<br />
 ip flow ingress<br />
 ip flow egress<br />
 no ip route-cache cef<br />
 no ip route-cache<br />
 beacon period 20<br />
 beacon dtim-period 1<br />
 !<br />
 encryption key 1 size 40bit 7 511A13062545 transmit-key<br />
 encryption mode wep mandatory<br />
 !<br />
 ssid baxterit<br />
 !<br />
 speed basic-36.0 basic-48.0 basic-54.0<br />
 station-role root<br />
 world-mode dot11d country CA both<br />
 no cdp enable<br />
 bridge-group 1<br />
 bridge-group 1 subscriber-loop-control<br />
 bridge-group 1 spanning-disabled<br />
 bridge-group 1 block-unknown-source<br />
 no bridge-group 1 source-learning<br />
 no bridge-group 1 unicast-flooding<br />
 !<br />
!<br />
interface Dot11Radio1<br />
 no ip address<br />
 beacon period 30<br />
 !<br />
 encryption key 1 size 40bit 7 0F7F5D623C70 transmit-key<br />
 encryption mode wep mandatory<br />
 !<br />
 ssid baxterit<br />
 !<br />
 speed basic-12.0 basic-18.0 basic-24.0 basic-36.0 basic-48.0 basic-54.0<br />
 station-role root<br />
 world-mode dot11d country CA both<br />
 bridge-group 1<br />
 bridge-group 1 subscriber-loop-control<br />
 bridge-group 1 spanning-disabled<br />
 bridge-group 1 port-protected<br />
 bridge-group 1 block-unknown-source<br />
 no bridge-group 1 source-learning<br />
 no bridge-group 1 unicast-flooding<br />
 !<br />
!<br />
interface FastEthernet0<br />
 description Shaw<br />
 mac-address 001b.dead.beef<br />
 ip dhcp client update dns<br />
 ip address dhcp hostname gw.baxterit.net<br />
 ip nat outside<br />
 ip virtual-reassembly<br />
 duplex auto<br />
 speed auto<br />
 !<br />
 service-policy output HOME-QoS-Policy-2<br />
!<br />
interface FastEthernet1<br />
 no ip address<br />
 shutdown<br />
 duplex auto<br />
 speed auto<br />
 !<br />
!<br />
interface FastEthernet2<br />
 description Downstairs<br />
 !<br />
!<br />
interface FastEthernet3<br />
 description Parents comp (jessica)<br />
 !<br />
!<br />
interface FastEthernet4<br />
 !<br />
!<br />
interface FastEthernet5<br />
 !<br />
!<br />
interface FastEthernet6<br />
 !<br />
!<br />
interface FastEthernet7<br />
 switchport mode trunk<br />
 !<br />
!<br />
interface FastEthernet8<br />
 !<br />
!<br />
interface FastEthernet9<br />
 !<br />
!<br />
interface Vlan1<br />
 description &#36;ETH-SW-LAUNCH&#36;&#36;INTF-INFO-HWIC 4ESW&#36;<br />
 no ip address<br />
 ip tcp adjust-mss 1452<br />
 ip policy route-map webtraffic-redirect<br />
 bridge-group 1<br />
 !<br />
!<br />
interface Async1<br />
 no ip address<br />
 encapsulation slip<br />
 !<br />
!<br />
interface BVI1<br />
 description &#36;ES_LAN&#36;<br />
 ip address 10.10.10.1 255.255.255.0<br />
 ip nat inside<br />
 ip virtual-reassembly<br />
 !<br />
!<br />
ip forward-protocol nd<br />
ip http server<br />
ip http access-class 3<br />
ip http authentication local<br />
ip http secure-server<br />
ip http timeout-policy idle 60 life 86400 requests 10000<br />
!<br />
ip flow-top-talkers<br />
 top 50<br />
 sort-by bytes<br />
 cache-timeout 30000<br />
!<br />
ip dns server<br />
ip nat inside source list 1 interface FastEthernet0 overload<br />
ip nat inside source static tcp 10.10.10.5 20 MY_IP 20 extendable<br />
ip nat inside source static tcp 10.10.10.5 21 MY_IP 21 extendable<br />
ip nat inside source static tcp 10.10.10.4 22 MY_IP 22 extendable<br />
ip nat inside source static udp 10.10.10.5 53 MY_IP 53 extendable<br />
ip nat inside source static udp 10.10.10.2 69 MY_IP 69 extendable<br />
ip nat inside source static tcp 10.10.10.4 80 MY_IP 80 extendable<br />
ip nat inside source static tcp 10.10.10.5 2087 MY_IP 2087 extendable<br />
ip nat inside source static tcp 10.10.10.2 3389 MY_IP 3389 extendable<br />
ip nat inside source static udp 10.10.10.2 161 MY_IP 6161 extendable<br />
ip nat inside source static udp 10.10.10.4 8161 MY_IP 8161 extendable<br />
ip nat inside source static udp 10.10.10.1 161 MY_IP 9161 extendable<br />
ip nat inside source static udp 10.10.10.5 161 MY_IP 10161 extendable<br />
ip nat inside source static udp 10.10.10.12 161 MY_IP 12161 extendable<br />
ip route 70.74.189.110 255.255.255.254 Null0<br />
!<br />
ip access-list extended HOME_HTTPS<br />
 remark HOME_ACL Category=1<br />
 permit tcp any any eq 443<br />
 remark HOME_ACL Category=1<br />
ip access-list extended HOME_SHELL<br />
 remark HOME_ACL Category=1<br />
 permit tcp any any eq cmd<br />
 remark HOME_ACL Category=1<br />
ip access-list extended HOME_SSH<br />
 remark HOME_ACL Category=1<br />
 permit tcp any any eq 22<br />
 remark HOME_ACL Category=1<br />
!<br />
access-list 1 remark HOME_ACL Category=3<br />
access-list 1 permit 10.10.10.0 0.0.0.255<br />
access-list 2 remark HTTP Access-class list<br />
access-list 2 remark HOME_ACL Category=1<br />
access-list 2 permit 10.10.10.0 0.0.0.7<br />
access-list 2 deny&nbsp;&nbsp; any<br />
access-list 3 remark HTTP Access-class list<br />
access-list 3 remark HOME_ACL Category=1<br />
access-list 3 permit 10.10.10.0 0.0.0.7<br />
access-list 3 deny&nbsp;&nbsp; any<br />
access-list 102 remark VTY Access-class list<br />
access-list 102 remark HOME_ACL Category=1<br />
access-list 102 permit ip 10.10.10.0 0.0.0.7 any<br />
access-list 102 deny&nbsp;&nbsp; ip any any<br />
access-list 102 remark VTY Access-class list<br />
access-list 102 remark HOME_ACL Category=1<br />
access-list 103 remark HOME_ACL Category=0<br />
access-list 103 permit ip any host 10.10.10.3<br />
access-list 103 remark HOME_ACL Category=0<br />
access-list 106 remark HOME_ACL Category=0<br />
access-list 106 permit ip any host 10.10.10.3<br />
access-list 106 remark HOME_ACL Category=0<br />
access-list 107 remark HOME_ACL Category=0<br />
access-list 107 permit ip any host 10.10.10.3<br />
access-list 107 remark HOME_ACL Category=0<br />
access-list 108 remark HOME_ACL Category=0<br />
access-list 108 permit ip any host 10.10.10.3<br />
access-list 108 remark HOME_ACL Category=0<br />
access-list 111 remark HOME_ACL Category=0<br />
access-list 111 permit ip any host 10.10.10.3<br />
access-list 111 remark HOME_ACL Category=0<br />
access-list 166 deny&nbsp;&nbsp; ip 207.46.0.0 0.0.255.255 any log<br />
ipv6 route ::/0 Tunnel0<br />
!<br />
!<br />
!<br />
!<br />
snmp-server community COMMUNITY_STRING RO<br />
snmp-server location Sylvan Lake, AB<br />
snmp-server contact burn<br />
!<br />
!<br />
control-plane<br />
 !<br />
!<br />
bridge 1 protocol ieee<br />
bridge 1 route ip<br />
alias exec spc show proc cpu | exclude 0.00<br />
banner motd ^C<br />
Access to this device or the attached<br />
networks is prohibited without express written permission.<br />
Violators will be prosecuted to the fullest extent of both civil<br />
and criminal law.<br />
<br />
We don't like you. Go away.<br />
<br />
^C<br />
!<br />
line con 0<br />
line 1<br />
 modem InOut<br />
 stopbits 1<br />
 speed 115200<br />
 flowcontrol hardware<br />
line aux 0<br />
line vty 0 2<br />
 access-class 1 in<br />
 privilege level 15<br />
 password 7 #############################<br />
 authorization exec local_author<br />
 login authentication local_authen<br />
 transport input ssh<br />
line vty 3 4<br />
 access-class 102 in<br />
 password 7 ###########################<br />
 authorization exec local_author<br />
 login authentication local_authen<br />
 transport input ssh<br />
!<br />
!<br />
webvpn context Default_context<br />
 ssl authenticate verify all<br />
 !<br />
 no inservice<br />
!<br />
end</code></div></div>
]]></description>
			<content:encoded><![CDATA[<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>Current configuration : 10490 bytes<br />
!<br />
! Last configuration change at 16:50:29 MST Sun Nov 15 2009 by rootme<br />
!<br />
version 15.0<br />
service nagle<br />
no service pad<br />
service tcp-keepalives-in<br />
service tcp-keepalives-out<br />
service timestamps debug datetime msec localtime show-timezone<br />
service timestamps log datetime msec localtime show-timezone<br />
service password-encryption<br />
service sequence-numbers<br />
!<br />
hostname gw<br />
!<br />
boot-start-marker<br />
boot-end-marker<br />
!<br />
logging buffered 4096<br />
enable secret 5 #############################<br />
!<br />
aaa new-model<br />
!<br />
!<br />
aaa group server radius rad_eap<br />
!<br />
aaa group server radius rad_mac<br />
!<br />
aaa group server radius rad_acct<br />
!<br />
aaa group server radius rad_admin<br />
!<br />
aaa group server tacacs+ tac_admin<br />
!<br />
aaa group server radius rad_pmip<br />
!<br />
aaa group server radius dummy<br />
!<br />
aaa authentication login local_authen local<br />
aaa authentication login eap_methods group rad_eap<br />
aaa authentication login mac_methods local<br />
aaa authorization exec local_author local<br />
aaa authorization ipmobile default group rad_pmip<br />
!<br />
!<br />
!<br />
!<br />
!<br />
aaa session-id common<br />
!<br />
!<br />
!<br />
clock timezone MST -7<br />
!<br />
crypto pki trustpoint TP-self-signed-2547479397<br />
**removed*!<br />
!<br />
crypto pki certificate chain TP-self-signed-2547479397<br />
**removed*<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;quit<br />
dot11 syslog<br />
!<br />
dot11 ssid baxterit<br />
 max-associations 7<br />
 authentication open<br />
 guest-mode<br />
 wpa-psk ascii 7 101951495247425954537C<br />
!<br />
no ip source-route<br />
!<br />
!<br />
no ip dhcp use vrf connected<br />
ip dhcp excluded-address 10.10.10.1 10.10.10.12<br />
!<br />
ip dhcp pool home-pool<br />
&nbsp;&nbsp; import all<br />
&nbsp;&nbsp; network 10.10.10.0 255.255.255.0<br />
&nbsp;&nbsp; default-router 10.10.10.1<br />
&nbsp;&nbsp; dns-server 64.59.184.13 64.59.184.15 64.59.135.133 64.59.135.135<br />
&nbsp;&nbsp; domain-name baxterit.net<br />
&nbsp;&nbsp; netbios-name-server 10.10.10.4<br />
&nbsp;&nbsp; lease 7<br />
!<br />
!<br />
ip cef<br />
no ip bootp server<br />
ip domain name baxterit.net<br />
no ipv6 cef<br />
!<br />
multilink bundle-name authenticated<br />
!<br />
!<br />
!<br />
license udi pid CISCO1811W-AG-A/K9 sn FHK111011P7<br />
archive<br />
 log config<br />
&nbsp;&nbsp;hidekeys<br />
!<br />
spanning-tree portfast bpduguard<br />
username rootme **removed*<br />
!<br />
!<br />
!<br />
class-map match-any HOME-Transactional-1<br />
 match&nbsp;&nbsp;dscp af21<br />
 match&nbsp;&nbsp;dscp af22<br />
 match&nbsp;&nbsp;dscp af23<br />
class-map match-any HOME-Signaling-1<br />
 match&nbsp;&nbsp;dscp cs3<br />
 match&nbsp;&nbsp;dscp af31<br />
class-map match-any HOME-Routing-1<br />
 match&nbsp;&nbsp;dscp cs6<br />
class-map match-any HOME-Management-1<br />
 match&nbsp;&nbsp;dscp cs2<br />
!<br />
!<br />
policy-map HOME-QoS-Policy-2<br />
policy-map HOME-QoS-Policy-1<br />
 class HOME-Signaling-1<br />
&nbsp;&nbsp;&nbsp;&nbsp;bandwidth percent 5<br />
 class HOME-Routing-1<br />
&nbsp;&nbsp;&nbsp;&nbsp;bandwidth percent 5<br />
 class HOME-Management-1<br />
&nbsp;&nbsp;&nbsp;&nbsp;bandwidth percent 5<br />
 class HOME-Transactional-1<br />
&nbsp;&nbsp;&nbsp;&nbsp;bandwidth percent 5<br />
 class class-default<br />
&nbsp;&nbsp;&nbsp;&nbsp;fair-queue<br />
&nbsp;&nbsp;&nbsp;&nbsp; random-detect<br />
!<br />
!<br />
!<br />
!<br />
bridge irb<br />
!<br />
!<br />
!<br />
!<br />
interface Tunnel0<br />
 description Hurricane Electric IPv6 Tunnel Broker<br />
 no ip address<br />
 ipv6 address 2001:470:A:116::2/64<br />
 ipv6 enable<br />
 tunnel source MY_IP<br />
 tunnel mode ipv6ip<br />
 tunnel destination 216.218.226.238<br />
 !<br />
!<br />
interface Dot11Radio0<br />
 description Wireless<br />
 no ip address<br />
 ip flow ingress<br />
 ip flow egress<br />
 no ip route-cache cef<br />
 no ip route-cache<br />
 beacon period 20<br />
 beacon dtim-period 1<br />
 !<br />
 encryption key 1 size 40bit 7 511A13062545 transmit-key<br />
 encryption mode wep mandatory<br />
 !<br />
 ssid baxterit<br />
 !<br />
 speed basic-36.0 basic-48.0 basic-54.0<br />
 station-role root<br />
 world-mode dot11d country CA both<br />
 no cdp enable<br />
 bridge-group 1<br />
 bridge-group 1 subscriber-loop-control<br />
 bridge-group 1 spanning-disabled<br />
 bridge-group 1 block-unknown-source<br />
 no bridge-group 1 source-learning<br />
 no bridge-group 1 unicast-flooding<br />
 !<br />
!<br />
interface Dot11Radio1<br />
 no ip address<br />
 beacon period 30<br />
 !<br />
 encryption key 1 size 40bit 7 0F7F5D623C70 transmit-key<br />
 encryption mode wep mandatory<br />
 !<br />
 ssid baxterit<br />
 !<br />
 speed basic-12.0 basic-18.0 basic-24.0 basic-36.0 basic-48.0 basic-54.0<br />
 station-role root<br />
 world-mode dot11d country CA both<br />
 bridge-group 1<br />
 bridge-group 1 subscriber-loop-control<br />
 bridge-group 1 spanning-disabled<br />
 bridge-group 1 port-protected<br />
 bridge-group 1 block-unknown-source<br />
 no bridge-group 1 source-learning<br />
 no bridge-group 1 unicast-flooding<br />
 !<br />
!<br />
interface FastEthernet0<br />
 description Shaw<br />
 mac-address 001b.dead.beef<br />
 ip dhcp client update dns<br />
 ip address dhcp hostname gw.baxterit.net<br />
 ip nat outside<br />
 ip virtual-reassembly<br />
 duplex auto<br />
 speed auto<br />
 !<br />
 service-policy output HOME-QoS-Policy-2<br />
!<br />
interface FastEthernet1<br />
 no ip address<br />
 shutdown<br />
 duplex auto<br />
 speed auto<br />
 !<br />
!<br />
interface FastEthernet2<br />
 description Downstairs<br />
 !<br />
!<br />
interface FastEthernet3<br />
 description Parents comp (jessica)<br />
 !<br />
!<br />
interface FastEthernet4<br />
 !<br />
!<br />
interface FastEthernet5<br />
 !<br />
!<br />
interface FastEthernet6<br />
 !<br />
!<br />
interface FastEthernet7<br />
 switchport mode trunk<br />
 !<br />
!<br />
interface FastEthernet8<br />
 !<br />
!<br />
interface FastEthernet9<br />
 !<br />
!<br />
interface Vlan1<br />
 description &#36;ETH-SW-LAUNCH&#36;&#36;INTF-INFO-HWIC 4ESW&#36;<br />
 no ip address<br />
 ip tcp adjust-mss 1452<br />
 ip policy route-map webtraffic-redirect<br />
 bridge-group 1<br />
 !<br />
!<br />
interface Async1<br />
 no ip address<br />
 encapsulation slip<br />
 !<br />
!<br />
interface BVI1<br />
 description &#36;ES_LAN&#36;<br />
 ip address 10.10.10.1 255.255.255.0<br />
 ip nat inside<br />
 ip virtual-reassembly<br />
 !<br />
!<br />
ip forward-protocol nd<br />
ip http server<br />
ip http access-class 3<br />
ip http authentication local<br />
ip http secure-server<br />
ip http timeout-policy idle 60 life 86400 requests 10000<br />
!<br />
ip flow-top-talkers<br />
 top 50<br />
 sort-by bytes<br />
 cache-timeout 30000<br />
!<br />
ip dns server<br />
ip nat inside source list 1 interface FastEthernet0 overload<br />
ip nat inside source static tcp 10.10.10.5 20 MY_IP 20 extendable<br />
ip nat inside source static tcp 10.10.10.5 21 MY_IP 21 extendable<br />
ip nat inside source static tcp 10.10.10.4 22 MY_IP 22 extendable<br />
ip nat inside source static udp 10.10.10.5 53 MY_IP 53 extendable<br />
ip nat inside source static udp 10.10.10.2 69 MY_IP 69 extendable<br />
ip nat inside source static tcp 10.10.10.4 80 MY_IP 80 extendable<br />
ip nat inside source static tcp 10.10.10.5 2087 MY_IP 2087 extendable<br />
ip nat inside source static tcp 10.10.10.2 3389 MY_IP 3389 extendable<br />
ip nat inside source static udp 10.10.10.2 161 MY_IP 6161 extendable<br />
ip nat inside source static udp 10.10.10.4 8161 MY_IP 8161 extendable<br />
ip nat inside source static udp 10.10.10.1 161 MY_IP 9161 extendable<br />
ip nat inside source static udp 10.10.10.5 161 MY_IP 10161 extendable<br />
ip nat inside source static udp 10.10.10.12 161 MY_IP 12161 extendable<br />
ip route 70.74.189.110 255.255.255.254 Null0<br />
!<br />
ip access-list extended HOME_HTTPS<br />
 remark HOME_ACL Category=1<br />
 permit tcp any any eq 443<br />
 remark HOME_ACL Category=1<br />
ip access-list extended HOME_SHELL<br />
 remark HOME_ACL Category=1<br />
 permit tcp any any eq cmd<br />
 remark HOME_ACL Category=1<br />
ip access-list extended HOME_SSH<br />
 remark HOME_ACL Category=1<br />
 permit tcp any any eq 22<br />
 remark HOME_ACL Category=1<br />
!<br />
access-list 1 remark HOME_ACL Category=3<br />
access-list 1 permit 10.10.10.0 0.0.0.255<br />
access-list 2 remark HTTP Access-class list<br />
access-list 2 remark HOME_ACL Category=1<br />
access-list 2 permit 10.10.10.0 0.0.0.7<br />
access-list 2 deny&nbsp;&nbsp; any<br />
access-list 3 remark HTTP Access-class list<br />
access-list 3 remark HOME_ACL Category=1<br />
access-list 3 permit 10.10.10.0 0.0.0.7<br />
access-list 3 deny&nbsp;&nbsp; any<br />
access-list 102 remark VTY Access-class list<br />
access-list 102 remark HOME_ACL Category=1<br />
access-list 102 permit ip 10.10.10.0 0.0.0.7 any<br />
access-list 102 deny&nbsp;&nbsp; ip any any<br />
access-list 102 remark VTY Access-class list<br />
access-list 102 remark HOME_ACL Category=1<br />
access-list 103 remark HOME_ACL Category=0<br />
access-list 103 permit ip any host 10.10.10.3<br />
access-list 103 remark HOME_ACL Category=0<br />
access-list 106 remark HOME_ACL Category=0<br />
access-list 106 permit ip any host 10.10.10.3<br />
access-list 106 remark HOME_ACL Category=0<br />
access-list 107 remark HOME_ACL Category=0<br />
access-list 107 permit ip any host 10.10.10.3<br />
access-list 107 remark HOME_ACL Category=0<br />
access-list 108 remark HOME_ACL Category=0<br />
access-list 108 permit ip any host 10.10.10.3<br />
access-list 108 remark HOME_ACL Category=0<br />
access-list 111 remark HOME_ACL Category=0<br />
access-list 111 permit ip any host 10.10.10.3<br />
access-list 111 remark HOME_ACL Category=0<br />
access-list 166 deny&nbsp;&nbsp; ip 207.46.0.0 0.0.255.255 any log<br />
ipv6 route ::/0 Tunnel0<br />
!<br />
!<br />
!<br />
!<br />
snmp-server community COMMUNITY_STRING RO<br />
snmp-server location Sylvan Lake, AB<br />
snmp-server contact burn<br />
!<br />
!<br />
control-plane<br />
 !<br />
!<br />
bridge 1 protocol ieee<br />
bridge 1 route ip<br />
alias exec spc show proc cpu | exclude 0.00<br />
banner motd ^C<br />
Access to this device or the attached<br />
networks is prohibited without express written permission.<br />
Violators will be prosecuted to the fullest extent of both civil<br />
and criminal law.<br />
<br />
We don't like you. Go away.<br />
<br />
^C<br />
!<br />
line con 0<br />
line 1<br />
 modem InOut<br />
 stopbits 1<br />
 speed 115200<br />
 flowcontrol hardware<br />
line aux 0<br />
line vty 0 2<br />
 access-class 1 in<br />
 privilege level 15<br />
 password 7 #############################<br />
 authorization exec local_author<br />
 login authentication local_authen<br />
 transport input ssh<br />
line vty 3 4<br />
 access-class 102 in<br />
 password 7 ###########################<br />
 authorization exec local_author<br />
 login authentication local_authen<br />
 transport input ssh<br />
!<br />
!<br />
webvpn context Default_context<br />
 ssl authenticate verify all<br />
 !<br />
 no inservice<br />
!<br />
end</code></div></div>
]]></content:encoded>
		</item>
	</channel>
</rss>
