Rack of Ethernet switches.

Visualizing Log Patterns with Color

Nginx and Apache Logs in Color

Web server logs reveal patterns of activity by web crawlers. Some are indexing crawlers operated by search engines, some are mysterious. Another pattern is systematic blind searches for vulnerable server-side executables or other configuration problems. The pattern you want to see is the interested user who follows some path through the hyperlinks on your site, taking time to read the pages.

Maybe we could use color to help spot these patterns?

Maybe...

First, let's look at the result, then the explanation comes later. Here are the most recent client requests, starting most recent first. Your request for this page won't appear there as it isn't complete by the time this page was automatically generated with PHP. But if you reload the page you should see your initial request near the top.

159.69.74.247 DE, Germany 24/Apr/2024:13:58:43 /travel/uk/swingate-chain-home/?s=mb
107.130.231.17 US, United States 24/Apr/2024:13:58:43 /travel/uk/swingate-chain-home/?s=mb
167.235.242.35 US, United States 24/Apr/2024:13:58:43 /travel/uk/swingate-chain-home/?s=mb
51.81.67.122 FR, France 24/Apr/2024:13:58:43 /travel/uk/swingate-chain-home/?s=mb
152.53.16.197 US, United States 24/Apr/2024:13:58:42 /travel/uk/swingate-chain-home/?s=mb
57.128.118.108 BE, Belgium 24/Apr/2024:13:58:42 /travel/uk/swingate-chain-home/?s=mb
57.128.95.173 BE, Belgium 24/Apr/2024:13:58:42 /travel/uk/swingate-chain-home/?s=mb
116.203.225.209 IN, India 24/Apr/2024:13:58:42 /travel/uk/swingate-chain-home/?s=mb
159.69.59.159 DE, Germany 24/Apr/2024:13:58:42 /travel/uk/swingate-chain-home/?s=mb
23.254.165.3 US, United States 24/Apr/2024:13:58:42 /travel/uk/swingate-chain-home/?s=mb
141.95.205.35 GB, United Kingdom 24/Apr/2024:13:58:42 /travel/uk/swingate-chain-home/?s=mb
45.77.5.31 US, United States 24/Apr/2024:13:58:42 /travel/uk/swingate-chain-home/?s=mb
95.217.190.18 FI, Finland 24/Apr/2024:13:58:41 /travel/uk/swingate-chain-home/?s=mb
94.130.174.59 DE, Germany 24/Apr/2024:13:58:41 /travel/uk/swingate-chain-home/?s=mb
34.27.162.185 US, United States 24/Apr/2024:13:58:40 /travel/uk/swingate-chain-home/?s=mb
51.68.203.250 FR, France 24/Apr/2024:13:58:40 /travel/uk/swingate-chain-home/?s=mb
199.167.29.8 US, United States 24/Apr/2024:13:58:40 /travel/uk/swingate-chain-home/?s=mb
35.165.97.169 US, United States 24/Apr/2024:13:58:40 /travel/uk/swingate-chain-home/?s=mb
143.110.144.224 US, United States 24/Apr/2024:13:58:39 /travel/uk/swingate-chain-home/?s=mb
194.195.127.156 DE, Germany 24/Apr/2024:13:58:39 /travel/uk/swingate-chain-home/?s=mb
46.22.99.207 IS, Iceland 24/Apr/2024:13:58:38 /travel/uk/swingate-chain-home/?s=mb
38.242.215.131 US, United States 24/Apr/2024:13:58:38 /travel/uk/swingate-chain-home/?s=mb
162.19.29.212 US, United States 24/Apr/2024:13:58:38 /travel/uk/swingate-chain-home/?s=mb
46.4.156.213 DE, Germany 24/Apr/2024:13:58:38 /travel/uk/swingate-chain-home/?s=mb
45.79.44.115 US, United States 24/Apr/2024:13:58:38 /travel/uk/swingate-chain-home/?s=mb
188.173.48.100 RO, Romania 24/Apr/2024:13:58:37 /travel/uk/swingate-chain-home/?s=mb
138.201.244.150 DE, Germany 24/Apr/2024:13:58:37 /travel/uk/swingate-chain-home/?s=mb
138.197.140.235 CA, Canada 24/Apr/2024:13:58:37 /travel/uk/swingate-chain-home/?s=mb
204.238.213.137 US, United States 24/Apr/2024:13:58:37 /travel/uk/swingate-chain-home/?s=mb
169.61.78.163 US, United States 24/Apr/2024:13:58:37 /travel/uk/swingate-chain-home/?s=mb
217.180.219.96 GB, United Kingdom 24/Apr/2024:13:58:37 /travel/uk/swingate-chain-home/?s=mb
85.119.80.254 GB, United Kingdom 24/Apr/2024:13:58:36 /travel/uk/swingate-chain-home/?s=mb
51.222.253.8 FR, France 24/Apr/2024:13:58:36 /open-source/samba-active-directory/dns.html
5.78.68.112 IR, Iran, Islamic Republic of 24/Apr/2024:13:58:36 /travel/uk/swingate-chain-home/?s=mb
176.9.185.230 DE, Germany 24/Apr/2024:13:58:36 /travel/uk/swingate-chain-home/?s=mb
89.163.221.150 DE, Germany 24/Apr/2024:13:58:36 /travel/uk/swingate-chain-home/?s=mb
193.30.122.175 DE, Germany 24/Apr/2024:13:58:36 /travel/uk/swingate-chain-home/?s=mb
89.233.207.67 SE, Sweden 24/Apr/2024:13:58:36 /travel/uk/swingate-chain-home/?s=mb
148.251.126.87 DE, Germany 24/Apr/2024:13:58:35 /travel/uk/swingate-chain-home/?s=mb
109.70.142.60 GB, United Kingdom 24/Apr/2024:13:58:35 /travel/uk/swingate-chain-home/?s=mb
195.95.177.33 NL, Netherlands 24/Apr/2024:13:58:35 /travel/uk/swingate-chain-home/?s=mb
5.161.182.88 IR, Iran, Islamic Republic of 24/Apr/2024:13:58:35 /travel/uk/swingate-chain-home/?s=mb
57.128.95.181 BE, Belgium 24/Apr/2024:13:58:34 /travel/uk/swingate-chain-home/?s=mb
49.13.224.169 IN, India 24/Apr/2024:13:58:34 /travel/uk/swingate-chain-home/?s=mb
68.252.16.184 US, United States 24/Apr/2024:13:58:34 /travel/uk/swingate-chain-home/?s=mb
51.89.179.74 FR, France 24/Apr/2024:13:58:34 /travel/uk/swingate-chain-home/?s=mb
95.216.199.37 FI, Finland 24/Apr/2024:13:58:34 /travel/uk/swingate-chain-home/?s=mb
138.201.222.244 DE, Germany 24/Apr/2024:13:58:33 /travel/uk/swingate-chain-home/?s=mb
185.236.240.137 PL, Poland 24/Apr/2024:13:58:33 /travel/uk/swingate-chain-home/?s=mb
91.194.60.14 FR, France 24/Apr/2024:13:58:33 /travel/uk/swingate-chain-home/?s=mb
93.93.128.11 GB, United Kingdom 24/Apr/2024:13:58:33 /travel/uk/swingate-chain-home/?s=mb
116.203.228.152 IN, India 24/Apr/2024:13:58:33 /travel/uk/swingate-chain-home/?s=mb
184.171.216.111 CA, Canada 24/Apr/2024:13:58:33 /travel/uk/swingate-chain-home/?s=mb
198.98.56.222 US, United States 24/Apr/2024:13:58:33 /travel/uk/swingate-chain-home/?s=mb
67.225.40.141 CA, Canada 24/Apr/2024:13:58:33 /travel/uk/swingate-chain-home/?s=mb
57.128.95.181 BE, Belgium 24/Apr/2024:13:58:33 /travel/uk/swingate-chain-home/?s=mb
79.173.92.175 RU, Russian Federation 24/Apr/2024:13:58:33 /turkish/language-reform.html
65.109.49.87 US, United States 24/Apr/2024:13:58:33 /travel/uk/swingate-chain-home/?s=mb
146.190.36.229 US, United States 24/Apr/2024:13:58:32 /travel/uk/swingate-chain-home/?s=mb
50.230.231.66 US, United States 24/Apr/2024:13:58:31 /travel/uk/swingate-chain-home/?s=mb
193.7.176.160 DE, Germany 24/Apr/2024:13:58:31 /travel/uk/swingate-chain-home/?s=mb
84.50.196.6 EE, Estonia 24/Apr/2024:13:58:31 /travel/uk/swingate-chain-home/?s=mb
51.210.99.95 FR, France 24/Apr/2024:13:58:31 /travel/uk/swingate-chain-home/?s=mb
150.230.20.153 US, United States 24/Apr/2024:13:58:31 /travel/uk/swingate-chain-home/?s=mb
80.79.194.226 NL, Netherlands 24/Apr/2024:13:58:31 /travel/uk/swingate-chain-home/?s=mb
49.13.208.195 IN, India 24/Apr/2024:13:58:31 /travel/uk/swingate-chain-home/?s=mb
148.252.106.155 NO, Norway 24/Apr/2024:13:58:31 /travel/uk/swingate-chain-home/?s=mb
5.189.170.21 DE, Germany 24/Apr/2024:13:58:31 /travel/uk/swingate-chain-home/?s=mb
5.75.243.239 IR, Iran, Islamic Republic of 24/Apr/2024:13:58:31 /travel/uk/swingate-chain-home/?s=mb
89.58.36.157 DE, Germany 24/Apr/2024:13:58:31 /travel/uk/swingate-chain-home/?s=mb
84.246.124.37 DE, Germany 24/Apr/2024:13:58:31 /travel/uk/swingate-chain-home/?s=mb
137.184.182.149 US, United States 24/Apr/2024:13:58:30 /travel/uk/swingate-chain-home/?s=mb
102.132.192.141 Unknown 24/Apr/2024:13:58:30 /travel/uk/swingate-chain-home/?s=mb
144.217.65.224 CA, Canada 24/Apr/2024:13:58:30 /travel/uk/swingate-chain-home/?s=mb
155.140.83.77 FR, France 24/Apr/2024:13:58:30 /open-source/sendmail-ssl.html
88.99.61.61 DE, Germany 24/Apr/2024:13:58:30 /travel/uk/swingate-chain-home/?s=mb
57.128.95.175 BE, Belgium 24/Apr/2024:13:58:30 /travel/uk/swingate-chain-home/?s=mb
185.121.168.247 NZ, New Zealand 24/Apr/2024:13:58:30 /travel/uk/swingate-chain-home/?s=mb
104.168.122.240 US, United States 24/Apr/2024:13:58:29 /travel/uk/swingate-chain-home/?s=mb
185.121.168.233 NZ, New Zealand 24/Apr/2024:13:58:29 /travel/uk/swingate-chain-home/?s=mb
34.162.186.242 US, United States 24/Apr/2024:13:58:29 /travel/uk/swingate-chain-home/?s=mb
173.255.213.247 US, United States 24/Apr/2024:13:58:29 /travel/uk/swingate-chain-home/?s=mb
20.150.150.150 US, United States 24/Apr/2024:13:58:29 /travel/uk/swingate-chain-home/?s=mb
95.217.37.144 FI, Finland 24/Apr/2024:13:58:28 /travel/uk/swingate-chain-home/?s=mb
5.161.74.177 IR, Iran, Islamic Republic of 24/Apr/2024:13:58:28 /travel/uk/swingate-chain-home/?s=mb
57.128.118.108 BE, Belgium 24/Apr/2024:13:58:28 /travel/uk/swingate-chain-home/?s=mb
85.214.244.210 DE, Germany 24/Apr/2024:13:58:27 /travel/uk/swingate-chain-home/?s=mb
203.129.31.244 AU, Australia 24/Apr/2024:13:58:27 /travel/uk/swingate-chain-home/?s=mb
89.58.41.236 DE, Germany 24/Apr/2024:13:58:27 /travel/uk/swingate-chain-home/?s=mb
37.187.91.149 FR, France 24/Apr/2024:13:58:27 /travel/uk/swingate-chain-home/?s=mb
86.155.200.19 GB, United Kingdom 24/Apr/2024:13:58:26 /travel/uk/swingate-chain-home/?s=mb
5.78.113.49 IR, Iran, Islamic Republic of 24/Apr/2024:13:58:26 /travel/uk/swingate-chain-home/?s=mb
91.107.200.82 IR, Iran, Islamic Republic of 24/Apr/2024:13:58:26 /travel/uk/swingate-chain-home/?s=mb
128.140.11.45 IR, Iran, Islamic Republic of 24/Apr/2024:13:58:26 /travel/uk/swingate-chain-home/?s=mb
76.241.26.223 US, United States 24/Apr/2024:13:58:25 /travel/uk/swingate-chain-home/?s=mb
65.109.234.6 US, United States 24/Apr/2024:13:58:25 /travel/uk/swingate-chain-home/?s=mb
141.95.205.41 GB, United Kingdom 24/Apr/2024:13:58:25 /travel/uk/swingate-chain-home/?s=mb
44.238.50.200 US, United States 24/Apr/2024:13:58:25 /travel/uk/swingate-chain-home/?s=mb
45.79.192.11 US, United States 24/Apr/2024:13:58:25 /travel/uk/swingate-chain-home/?s=mb
35.177.35.138 GB, United Kingdom 24/Apr/2024:13:58:24 /travel/uk/swingate-chain-home/?s=mb
185.232.71.82 AT, Austria 24/Apr/2024:13:58:24 /travel/uk/swingate-chain-home/?s=mb
195.201.111.25 DE, Germany 24/Apr/2024:13:58:24 /travel/uk/swingate-chain-home/?s=mb
185.183.159.222 DE, Germany 24/Apr/2024:13:58:24 /travel/uk/swingate-chain-home/?s=mb
85.215.49.242 DE, Germany 24/Apr/2024:13:58:24 /travel/uk/swingate-chain-home/?s=mb
15.204.47.199 US, United States 24/Apr/2024:13:58:23 /travel/uk/swingate-chain-home/?s=mb
141.95.205.35 GB, United Kingdom 24/Apr/2024:13:58:23 /travel/uk/swingate-chain-home/?s=mb
5.161.135.64 IR, Iran, Islamic Republic of 24/Apr/2024:13:58:22 /travel/uk/swingate-chain-home/?s=mb
142.132.227.141 CA, Canada 24/Apr/2024:13:58:22 /travel/uk/swingate-chain-home/?s=mb
5.75.251.148 IR, Iran, Islamic Republic of 24/Apr/2024:13:58:22 /travel/uk/swingate-chain-home/?s=mb
4.31.103.75 US, United States 24/Apr/2024:13:58:22 /travel/uk/swingate-chain-home/?s=mb
136.144.242.155 NL, Netherlands 24/Apr/2024:13:58:22 /travel/uk/swingate-chain-home/?s=mb
49.13.137.65 IN, India 24/Apr/2024:13:58:21 /travel/uk/swingate-chain-home/?s=mb
136.55.229.122 US, United States 24/Apr/2024:13:58:21 /travel/uk/swingate-chain-home/?s=mb
3.71.175.36 US, United States 24/Apr/2024:13:58:20 /travel/uk/swingate-chain-home/?s=mb
116.203.243.50 IN, India 24/Apr/2024:13:58:20 /travel/uk/swingate-chain-home/?s=mb
104.28.211.105 US, United States 24/Apr/2024:13:58:20 /travel/uk/swingate-chain-home/?s=mb
185.207.104.128 DE, Germany 24/Apr/2024:13:58:20 /travel/uk/swingate-chain-home/?s=mb
57.128.95.175 BE, Belgium 24/Apr/2024:13:58:20 /travel/uk/swingate-chain-home/?s=mb
128.140.65.48 IR, Iran, Islamic Republic of 24/Apr/2024:13:58:19 /travel/uk/swingate-chain-home/?s=mb
18.138.81.13 US, United States 24/Apr/2024:13:58:19 /travel/uk/swingate-chain-home/?s=mb
151.80.33.67 FR, France 24/Apr/2024:13:58:18 /travel/uk/swingate-chain-home/?s=mb
71.191.71.248 US, United States 24/Apr/2024:13:58:18 /travel/uk/swingate-chain-home/?s=mb
195.201.25.153 DE, Germany 24/Apr/2024:13:58:18 /travel/uk/swingate-chain-home/?s=mb
5.75.170.42 IR, Iran, Islamic Republic of 24/Apr/2024:13:58:17 /travel/uk/swingate-chain-home/?s=mb
57.128.95.174 BE, Belgium 24/Apr/2024:13:58:17 /travel/uk/swingate-chain-home/?s=mb
167.71.128.79 US, United States 24/Apr/2024:13:58:17 /travel/uk/swingate-chain-home/?s=mb
192.104.234.221 US, United States 24/Apr/2024:13:58:17 /travel/uk/swingate-chain-home/?s=mb
153.126.168.112 JP, Japan 24/Apr/2024:13:58:17 /travel/uk/swingate-chain-home/?s=mb
131.150.16.151 US, United States 24/Apr/2024:13:58:17 /travel/uk/swingate-chain-home/?s=mb
162.19.29.212 US, United States 24/Apr/2024:13:58:17 /travel/uk/swingate-chain-home/?s=mb
5.161.210.238 IR, Iran, Islamic Republic of 24/Apr/2024:13:58:17 /travel/uk/swingate-chain-home/?s=mb
57.128.95.181 BE, Belgium 24/Apr/2024:13:58:16 /travel/uk/swingate-chain-home/?s=mb
65.109.98.227 US, United States 24/Apr/2024:13:58:16 /travel/uk/swingate-chain-home/?s=mb
141.148.226.30 US, United States 24/Apr/2024:13:58:16 /travel/uk/swingate-chain-home/?s=mb
15.204.143.142 US, United States 24/Apr/2024:13:58:16 /travel/uk/swingate-chain-home/?s=mb
37.187.74.178 FR, France 24/Apr/2024:13:58:16 /travel/uk/swingate-chain-home/?s=mb
159.69.63.241 DE, Germany 24/Apr/2024:13:58:15 /travel/uk/swingate-chain-home/?s=mb
57.128.118.171 BE, Belgium 24/Apr/2024:13:58:15 /travel/uk/swingate-chain-home/?s=mb
5.161.177.48 IR, Iran, Islamic Republic of 24/Apr/2024:13:58:14 /travel/uk/swingate-chain-home/?s=mb
57.128.95.173 BE, Belgium 24/Apr/2024:13:58:14 /travel/uk/swingate-chain-home/?s=mb
157.90.176.17 US, United States 24/Apr/2024:13:58:14 /travel/uk/swingate-chain-home/?s=mb
71.135.1.217 US, United States 24/Apr/2024:13:58:14 /travel/uk/swingate-chain-home/?s=mb
46.4.102.174 DE, Germany 24/Apr/2024:13:58:14 /travel/uk/swingate-chain-home/?s=mb
103.68.63.147 HK, Hong Kong 24/Apr/2024:13:58:14 /travel/uk/swingate-chain-home/?s=mb
134.122.101.11 US, United States 24/Apr/2024:13:58:14 /travel/uk/swingate-chain-home/?s=mb
92.60.41.50 Unknown 24/Apr/2024:13:58:14 /travel/uk/swingate-chain-home/?s=mb
138.201.19.143 DE, Germany 24/Apr/2024:13:58:14 /travel/uk/swingate-chain-home/?s=mb
162.231.202.249 US, United States 24/Apr/2024:13:58:13 /travel/uk/swingate-chain-home/?s=mb
176.9.111.120 DE, Germany 24/Apr/2024:13:58:13 /travel/uk/swingate-chain-home/?s=mb
138.197.110.222 US, United States 24/Apr/2024:13:58:13 /travel/uk/swingate-chain-home/?s=mb
143.198.237.161 US, United States 24/Apr/2024:13:58:13 /travel/uk/swingate-chain-home/?s=mb
185.144.208.227 ES, Spain 24/Apr/2024:13:58:12 /travel/uk/swingate-chain-home/?s=mb
140.238.157.69 US, United States 24/Apr/2024:13:58:12 /travel/uk/swingate-chain-home/?s=mb
57.128.95.173 BE, Belgium 24/Apr/2024:13:58:12 /travel/uk/swingate-chain-home/?s=mb
134.122.76.6 US, United States 24/Apr/2024:13:58:12 /travel/uk/swingate-chain-home/?s=mb
148.251.28.156 DE, Germany 24/Apr/2024:13:58:12 /travel/uk/swingate-chain-home/?s=mb
23.166.120.27 Unknown 24/Apr/2024:13:58:12 /travel/uk/swingate-chain-home/?s=mb
66.70.164.0 CA, Canada 24/Apr/2024:13:58:12 /travel/uk/swingate-chain-home/?s=mb
64.23.175.205 US, United States 24/Apr/2024:13:58:11 /travel/uk/swingate-chain-home/?s=mb
51.75.131.70 FR, France 24/Apr/2024:13:58:11 /travel/uk/swingate-chain-home/?s=mb
51.75.171.21 FR, France 24/Apr/2024:13:58:11 /travel/uk/swingate-chain-home/?s=mb
141.95.205.35 GB, United Kingdom 24/Apr/2024:13:58:11 /travel/uk/swingate-chain-home/?s=mb
91.135.7.214 GB, United Kingdom 24/Apr/2024:13:58:10 /travel/uk/swingate-chain-home/?s=mb
75.149.3.178 US, United States 24/Apr/2024:13:58:10 /travel/uk/swingate-chain-home/?s=mb
45.94.211.93 Unknown 24/Apr/2024:13:58:09 /travel/uk/swingate-chain-home/?s=mb
64.4.175.77 US, United States 24/Apr/2024:13:58:09 /travel/uk/swingate-chain-home/?s=mb
94.130.105.194 DE, Germany 24/Apr/2024:13:58:09 /travel/uk/swingate-chain-home/?s=mb
159.223.200.185 US, United States 24/Apr/2024:13:58:08 /blog/2023/01/03-whats-up-with-my-social-media.html
159.223.200.185 US, United States 24/Apr/2024:13:58:08 /
95.216.33.203 FI, Finland 24/Apr/2024:13:58:08 /travel/uk/swingate-chain-home/?s=mb
82.64.169.75 FR, France 24/Apr/2024:13:58:07 /travel/uk/swingate-chain-home/?s=mb
5.75.240.129 IR, Iran, Islamic Republic of 24/Apr/2024:13:58:07 /travel/uk/swingate-chain-home/?s=mb
142.132.172.167 CA, Canada 24/Apr/2024:13:58:07 /travel/uk/swingate-chain-home/?s=mb
128.140.57.247 IR, Iran, Islamic Republic of 24/Apr/2024:13:58:07 /travel/uk/swingate-chain-home/?s=mb
91.73.157.172 AE, United Arab Emirates 24/Apr/2024:13:58:06 /travel/uk/swingate-chain-home/?s=mb
135.148.34.236 US, United States 24/Apr/2024:13:58:06 /travel/uk/swingate-chain-home/?s=mb
54.38.176.219 FR, France 24/Apr/2024:13:58:05 /travel/uk/swingate-chain-home/?s=mb
185.206.232.42 NL, Netherlands 24/Apr/2024:13:58:05 /travel/uk/swingate-chain-home/?s=mb
185.199.222.29 GB, United Kingdom 24/Apr/2024:13:58:04 /travel/uk/swingate-chain-home/?s=mb
5.75.146.253 IR, Iran, Islamic Republic of 24/Apr/2024:13:58:04 /travel/uk/swingate-chain-home/?s=mb
94.244.97.69 LT, Lithuania 24/Apr/2024:13:58:04 /travel/uk/swingate-chain-home/?s=mb
57.128.95.173 BE, Belgium 24/Apr/2024:13:58:04 /blog/2023/01/03-whats-up-with-my-social-media.html
52.167.144.138 US, United States 24/Apr/2024:13:58:03 /travel/usa/poe-in-new-york/
103.208.85.167 SG, Singapore 24/Apr/2024:13:58:03 /travel/uk/swingate-chain-home/?s=mb

Here's what's going on.

Each line above is a request from a client, extracted from Nginx's /var/www/logs/httpd-access.log file. The client IP address, timestamp, and requested path were selected with awk and the client IP address converted to a country if possible with geoiplookup.

Geolocate IP

You can use a service such as Abstract's IP geolocation to check if the conversion was successful, or if the client IP address is the exit portal of a VPN.

The first 3 octets or first 24 bits of the IP address are used to specify the hue, with chroma at 75% and intensity at 100%. The resulting red, green, and blue values are scaled to the range of 0-255 and printed as two-character hexadecimal in an HTML style string.

Low-numbered /8 networks appear as red, 20.0.0.0/8 through 40.0.0.0/8 are orange shifting to yellow, 50.0.0.0/8 through 110.0.0.0/8 are shades of green, the /16 networks 130.0.0.0/16 through about 180.0.0.0/16 are shades of blue, then it's shades of purple into magenta for the /24 networks 192.0.0.0/24 and up through 223.255.255.0/24.

The HTML file on the server has a line where PHP uses passthru() to call the following shell script:

#!/bin/sh

# Initial pipeline:
# tail		Just the last 200 (or slightly less after the grep)
# grep		... just the requests out of that
# cat | sort	... put into reverse order
# sed		... remove the quotes and square brackets
# awk		... print the IP address twice, timestamp, and requested path
# sed		... remove the first 3 dots to split first version of IP
#			address into octets, and remove any characters that
#			could cause trouble when inserted into this page
# I need to use the client IP address, field #5 at that point, to call
# geoiplookup.  So, send the initial pipeline into a while loop that
# assigns variables, sets a new variable, and then echoes the resulting
# collection into awk.
tail -200 /var/www/logs/access_log |
	grep 'GET.*200' |
	cat -n | sort -nr |
	sed -e 's/"/ /g' -e 's/\[//g' -e 's/\]//g' |
	awk '{print $2, $2, $5, $8}' |
	sed -e 's/\./ /' -e 's/\./ /' -e 's/\./ /' -e 's/[<>]//g' |
	while read IP1 IP2 IP3 IP4 CLIENTIP TIMESTAMP URL
	do
		COUNTRY=$( geoiplookup $CLIENTIP |
				sed 's/.*Edition: //' |
				sed 's/IP Address not found/Unknown/' )
		echo $IP1 $IP2 $IP3 $IP4 $CLIENTIP $COUNTRY $TIMESTAMP $URL |
		awk '{
			ip1 = $1;
			ip2 = $2;
			ip3 = $3;
			chroma = 0.75;
			hue = 6*(ip1*255*255 + ip2*255 + ip3)/(255*255*255);
			if (hue%2 > 1) {
				x = chroma*(1.0 - (hue%2 - 1));
			} else {
				x = chroma*(1.0 - (1 - hue%2));
			}
			if (hue < 1.0) {
				r = chroma;
				g = x;
				b = 0;
			} else if (hue < 2.0) {
				r = x;
				g = chroma;
				b = 0;
			} else if (hue < 3.0) {
				r = 0;
				g = chroma;
				b = x;
			} else if (hue < 4.0) {
				r = 0;
				g = x;
				b = chroma;
			} else if (hue < 5.0) {
				r = x;
				g = 0;
				b = chroma;
			} else {
				r = chroma;
				g = 0;
				b = x;
			}
			r = (r + 0.25)*255;
			g = (g + 0.25)*255;
			b = (b + 0.25)*255;

			printf("<div class=\"col-12 textleft\" ");
			printf("style=\"color:#000; background:#%02x%02x%02x;\"> ", r, g, b);
			for (i = 5; i <= NF; i++) {
				printf("%s ", $i);
			}
			printf("</div>\n");
		}'
	done 

Other Pages