<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.jamesdooley.us/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Smsldoo</id>
		<title>James Dooley's Wiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.jamesdooley.us/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Smsldoo"/>
		<link rel="alternate" type="text/html" href="http://wiki.jamesdooley.us/index.php?title=Special:Contributions/Smsldoo"/>
		<updated>2026-04-11T01:33:37Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.28.0</generator>

	<entry>
		<id>http://wiki.jamesdooley.us/index.php?title=Denied_DNS_Requests&amp;diff=614</id>
		<title>Denied DNS Requests</title>
		<link rel="alternate" type="text/html" href="http://wiki.jamesdooley.us/index.php?title=Denied_DNS_Requests&amp;diff=614"/>
				<updated>2017-06-06T13:06:30Z</updated>
		
		<summary type="html">&lt;p&gt;Smsldoo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:One Liners]]&lt;br /&gt;
==Overview==&lt;br /&gt;
Find denied queries against DNS, good for finding sites that are no longer hosted or do not have valid DNS records.&lt;br /&gt;
&lt;br /&gt;
==Get top denied domains==&lt;br /&gt;
&amp;lt;syntaxhighlight lang='bash'&amp;gt;&lt;br /&gt;
cat /var/log/messages | grep named | grep denied | cut -d &amp;quot;'&amp;quot; -f2 | cut -d &amp;quot;/&amp;quot; -f1 | sort | uniq -ci | sort -nr | head&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Get all denied domains==&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;&lt;br /&gt;
cat /var/log/messages | grep named | grep denied | cut -d &amp;quot;'&amp;quot; -f2 | cut -d &amp;quot;/&amp;quot; -f1 | sort | uniq -ci | sort -nr &amp;gt; /root/denied_dns.txt&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Create dummy zone for a single domain==&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;&lt;br /&gt;
/scripts/add_dns --domain $domain --ip 127.0.0.1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Create dummy zone for the top 10 domains==&lt;br /&gt;
&lt;br /&gt;
This will create a zone file using cPanels add_dns script and point it to 127.0.0.1 for the top 10 domains.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;&lt;br /&gt;
cp -r /var/named /var/named.bak&lt;br /&gt;
for domain in $(head /root/denied_dns.txt | awk '{print $2}' | sed 's/www\.//'); do echo &amp;quot;Adding $domain&amp;quot;; /scripts/add_dns --domain $domain --ip 127.0.0.1; done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Smsldoo</name></author>	</entry>

	<entry>
		<id>http://wiki.jamesdooley.us/index.php?title=Denied_DNS_Requests&amp;diff=613</id>
		<title>Denied DNS Requests</title>
		<link rel="alternate" type="text/html" href="http://wiki.jamesdooley.us/index.php?title=Denied_DNS_Requests&amp;diff=613"/>
				<updated>2017-04-04T17:12:37Z</updated>
		
		<summary type="html">&lt;p&gt;Smsldoo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:One Liners]]&lt;br /&gt;
==Overview==&lt;br /&gt;
Find denied queries against DNS, good for finding sites that are no longer hosted or do not have valid DNS records.&lt;br /&gt;
&lt;br /&gt;
==Get top denied domains==&lt;br /&gt;
&amp;lt;syntaxhighlight lang='bash'&amp;gt;&lt;br /&gt;
cat /var/log/messages | grep named | grep denied | cut -d &amp;quot;'&amp;quot; -f2 | cut -d &amp;quot;/&amp;quot; -f1 | sort | uniq -ci | sort -nr | head&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Get all denied domains==&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;&lt;br /&gt;
cat /var/log/messages | grep named | grep denied | cut -d &amp;quot;'&amp;quot; -f2 | cut -d &amp;quot;/&amp;quot; -f1 | sort | uniq -ci | sort -nr &amp;gt; /root/denied_dns.txt&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Create dummy zone for top 10 domains==&lt;br /&gt;
&lt;br /&gt;
This will create a zone file using cPanels add_dns script and point it to 127.0.0.1 for the top 10 domains.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;&lt;br /&gt;
cp -r /var/named /var/named.bak&lt;br /&gt;
for domain in $(head /root/denied_dns.txt | awk '{print $2}' | sed 's/www\.//'); do echo &amp;quot;Adding $domain&amp;quot;; /scripts/add_dns --domain $domain --ip 127.0.0.1; done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Smsldoo</name></author>	</entry>

	<entry>
		<id>http://wiki.jamesdooley.us/index.php?title=Template:Conditional&amp;diff=612</id>
		<title>Template:Conditional</title>
		<link rel="alternate" type="text/html" href="http://wiki.jamesdooley.us/index.php?title=Template:Conditional&amp;diff=612"/>
				<updated>2015-09-08T15:07:36Z</updated>
		
		<summary type="html">&lt;p&gt;Smsldoo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class='conditional_container' style='padding: 0 0 0 30px; border-top-left-radius: 30px; border-bottom-left-radius: 30px; background: repeat-y;'&amp;gt;&lt;br /&gt;
&amp;lt;div class='conditional_header' style='padding: 0 0 0 10px; border: 3px solid blue; background: rgba(0,0,255,.1);'&amp;gt;&lt;br /&gt;
If condition 1:&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{mbox|type=step|msg=Do something|text=&lt;br /&gt;
Things to do for this step&lt;br /&gt;
&lt;br /&gt;
Other things to do for this step&lt;br /&gt;
}}&lt;br /&gt;
{{mbox|type=step|msg=Do something else|text=&lt;br /&gt;
Things to do for this step&lt;br /&gt;
&lt;br /&gt;
Other things to do for this step&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;div class='conditional_header' style='padding: 0 0 0 10px; border: 3px solid blue; background: rgba(0,0,255,.1);'&amp;gt;&lt;br /&gt;
If condition 2:&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{mbox|type=step|msg=Do something|text=&lt;br /&gt;
Things to do for this step&lt;br /&gt;
&lt;br /&gt;
Other things to do for this step&lt;br /&gt;
}}&lt;br /&gt;
{{mbox|type=step|msg=Do something else|text=&lt;br /&gt;
Things to do for this step&lt;br /&gt;
&lt;br /&gt;
Other things to do for this step&lt;br /&gt;
}}&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Smsldoo</name></author>	</entry>

	<entry>
		<id>http://wiki.jamesdooley.us/index.php?title=Template:Conditional&amp;diff=611</id>
		<title>Template:Conditional</title>
		<link rel="alternate" type="text/html" href="http://wiki.jamesdooley.us/index.php?title=Template:Conditional&amp;diff=611"/>
				<updated>2015-09-08T15:05:39Z</updated>
		
		<summary type="html">&lt;p&gt;Smsldoo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class='conditional_container' style='padding: 0 0 0 30px; border-top-left-radius: 30px; border-bottom-left-radius: 30px; background: repeat-y;'&amp;gt;&lt;br /&gt;
&amp;lt;div class='conditional_header' style='padding: 0 0 0 10px; border: 3px solid blue; background: rgba(0,0,255,.1);'&amp;gt;&lt;br /&gt;
If condition 1:&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{mbox|type=step|msg=Do something|text=&lt;br /&gt;
Things to do for this step&lt;br /&gt;
&lt;br /&gt;
Other things to do for this step&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;div class='conditional_header' style='padding: 0 0 0 10px; border: 3px solid blue; background: rgba(0,0,255,.1);'&amp;gt;&lt;br /&gt;
If condition 2:&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{mbox|type=step|msg=Do something else|text=&lt;br /&gt;
Things to do for this step&lt;br /&gt;
&lt;br /&gt;
Other things to do for this step&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Smsldoo</name></author>	</entry>

	<entry>
		<id>http://wiki.jamesdooley.us/index.php?title=Template:Conditional&amp;diff=610</id>
		<title>Template:Conditional</title>
		<link rel="alternate" type="text/html" href="http://wiki.jamesdooley.us/index.php?title=Template:Conditional&amp;diff=610"/>
				<updated>2015-09-08T15:02:32Z</updated>
		
		<summary type="html">&lt;p&gt;Smsldoo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class='conditional_container' style='padding: 0 0 0 30px; border-top-left-radius: 30px; border-bottom-left-radius: 30px; background: repeat-y;'&amp;gt;&lt;br /&gt;
&amp;lt;div class='conditional_header' style='border: 3px solid blue; background: rgba(0,0,255,.1);'&amp;gt;&lt;br /&gt;
If condition 1:&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{mbox|type=step|msg=Do something|text=&lt;br /&gt;
Things to do for this step&lt;br /&gt;
&lt;br /&gt;
Other things to do for this step&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;div class='conditional_header' style='border: 3px solid blue; background: rgba(0,0,255,.1);'&amp;gt;&lt;br /&gt;
If condition 2:&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{mbox|type=step|msg=Do something else|text=&lt;br /&gt;
Things to do for this step&lt;br /&gt;
&lt;br /&gt;
Other things to do for this step&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Smsldoo</name></author>	</entry>

	<entry>
		<id>http://wiki.jamesdooley.us/index.php?title=Template:Conditional&amp;diff=609</id>
		<title>Template:Conditional</title>
		<link rel="alternate" type="text/html" href="http://wiki.jamesdooley.us/index.php?title=Template:Conditional&amp;diff=609"/>
				<updated>2015-09-08T14:56:26Z</updated>
		
		<summary type="html">&lt;p&gt;Smsldoo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class='conditional_container' style='padding: 0 0 0 30px; border-top-left-radius: 30px; border-bottom-left-radius: 30px; background: repeat-y;'&amp;gt;&lt;br /&gt;
&amp;lt;div class='conditional_header' style='border: 3px ridge; border-color: blue;'&amp;gt;&lt;br /&gt;
Test&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
test &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
test&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
test&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Smsldoo</name></author>	</entry>

	<entry>
		<id>http://wiki.jamesdooley.us/index.php?title=File:Conditional_line.png&amp;diff=608</id>
		<title>File:Conditional line.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.jamesdooley.us/index.php?title=File:Conditional_line.png&amp;diff=608"/>
				<updated>2015-09-08T14:46:34Z</updated>
		
		<summary type="html">&lt;p&gt;Smsldoo: Smsldoo uploaded a new version of &amp;amp;quot;File:Conditional line.png&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Smsldoo</name></author>	</entry>

	<entry>
		<id>http://wiki.jamesdooley.us/index.php?title=Template:Conditional&amp;diff=607</id>
		<title>Template:Conditional</title>
		<link rel="alternate" type="text/html" href="http://wiki.jamesdooley.us/index.php?title=Template:Conditional&amp;diff=607"/>
				<updated>2015-09-08T14:43:30Z</updated>
		
		<summary type="html">&lt;p&gt;Smsldoo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style='padding: 0 25px 0 40px; border: ridge 5px;)'&amp;gt;&lt;br /&gt;
Test&lt;br /&gt;
&lt;br /&gt;
test &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
test&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
test&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Smsldoo</name></author>	</entry>

	<entry>
		<id>http://wiki.jamesdooley.us/index.php?title=Template:Conditional&amp;diff=606</id>
		<title>Template:Conditional</title>
		<link rel="alternate" type="text/html" href="http://wiki.jamesdooley.us/index.php?title=Template:Conditional&amp;diff=606"/>
				<updated>2015-09-08T14:43:09Z</updated>
		
		<summary type="html">&lt;p&gt;Smsldoo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style='padding: 0 25px 0 0; margin: 0 0 40px 0; border: ridge 5px;)'&amp;gt;&lt;br /&gt;
Test&lt;br /&gt;
&lt;br /&gt;
test &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
test&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
test&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Smsldoo</name></author>	</entry>

	<entry>
		<id>http://wiki.jamesdooley.us/index.php?title=Template:Conditional&amp;diff=605</id>
		<title>Template:Conditional</title>
		<link rel="alternate" type="text/html" href="http://wiki.jamesdooley.us/index.php?title=Template:Conditional&amp;diff=605"/>
				<updated>2015-09-08T14:39:49Z</updated>
		
		<summary type="html">&lt;p&gt;Smsldoo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style='padding: 0 25px 0 0; margin: 0 0 40px 0; border: ridge 5px;)'&amp;gt;&lt;br /&gt;
Test&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Smsldoo</name></author>	</entry>

	<entry>
		<id>http://wiki.jamesdooley.us/index.php?title=Template:Conditional&amp;diff=604</id>
		<title>Template:Conditional</title>
		<link rel="alternate" type="text/html" href="http://wiki.jamesdooley.us/index.php?title=Template:Conditional&amp;diff=604"/>
				<updated>2015-09-08T14:16:16Z</updated>
		
		<summary type="html">&lt;p&gt;Smsldoo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style='padding: 0 25px 0 0; border: ridge 5px;'&amp;gt;&lt;br /&gt;
Test&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Smsldoo</name></author>	</entry>

	<entry>
		<id>http://wiki.jamesdooley.us/index.php?title=Template:Conditional&amp;diff=603</id>
		<title>Template:Conditional</title>
		<link rel="alternate" type="text/html" href="http://wiki.jamesdooley.us/index.php?title=Template:Conditional&amp;diff=603"/>
				<updated>2015-09-08T13:55:31Z</updated>
		
		<summary type="html">&lt;p&gt;Smsldoo: Created page with &amp;quot;&amp;lt;div style='padding: 0 25px 0 0; border: ridge 5px; background: url(&amp;quot;/images/7/72/Conditional_line.png&amp;quot;) repeat-y;'&amp;gt; Test &amp;lt;/div&amp;gt;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style='padding: 0 25px 0 0; border: ridge 5px; background: url(&amp;quot;/images/7/72/Conditional_line.png&amp;quot;) repeat-y;'&amp;gt;&lt;br /&gt;
Test&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Smsldoo</name></author>	</entry>

	<entry>
		<id>http://wiki.jamesdooley.us/index.php?title=File:Conditional_line.png&amp;diff=602</id>
		<title>File:Conditional line.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.jamesdooley.us/index.php?title=File:Conditional_line.png&amp;diff=602"/>
				<updated>2015-09-08T13:52:48Z</updated>
		
		<summary type="html">&lt;p&gt;Smsldoo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Smsldoo</name></author>	</entry>

	<entry>
		<id>http://wiki.jamesdooley.us/index.php?title=Template:NavFrame&amp;diff=601</id>
		<title>Template:NavFrame</title>
		<link rel="alternate" type="text/html" href="http://wiki.jamesdooley.us/index.php?title=Template:NavFrame&amp;diff=601"/>
				<updated>2015-04-08T13:22:52Z</updated>
		
		<summary type="html">&lt;p&gt;Smsldoo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;NavFrame {{{frameClass|}}}&amp;quot; style=&amp;quot;{{{frameStyle|}}}&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;NavHead {{{headClass|}}}&amp;quot; style=&amp;quot;{{{headStyle|}}}&amp;quot;&amp;gt;{{{head|}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;NavContent {{{contentClass|}}}&amp;quot; style=&amp;quot;{{{contentStyle|}}}&amp;quot;&amp;gt;&lt;br /&gt;
{{{content|}}}&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Usage ==&lt;br /&gt;
General usage layout is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{NavFrame&lt;br /&gt;
|head=Text displayed in the header&lt;br /&gt;
|content=Text displayed in the content area&lt;br /&gt;
Multiple lines are allowed.&lt;br /&gt;
|collapse Automatically collapse the content area&lt;br /&gt;
|[frame|head|content]Class= CSS class for a specific element&lt;br /&gt;
|[frame|head|content]Style= CSS style for a specific element&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{NavFrame&lt;br /&gt;
|head=Text displayed in the header&lt;br /&gt;
|content=Text displayed in the content area&lt;br /&gt;
&lt;br /&gt;
Multiple lines are allowed.&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{NavFrame&lt;br /&gt;
|head=Text displayed in the header&lt;br /&gt;
|content=Text displayed in the content area&lt;br /&gt;
&lt;br /&gt;
Multiple lines are allowed.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Collapsed===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{NavFrame&lt;br /&gt;
|frameClass=collapsed&lt;br /&gt;
|head=Text displayed in the header&lt;br /&gt;
|content=Text displayed in the content area&lt;br /&gt;
&lt;br /&gt;
Multiple lines are allowed.&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{NavFrame&lt;br /&gt;
|frameClass=collapsed&lt;br /&gt;
|head=Text displayed in the header&lt;br /&gt;
|content=Text displayed in the content area&lt;br /&gt;
&lt;br /&gt;
Multiple lines are allowed.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Smsldoo</name></author>	</entry>

	<entry>
		<id>http://wiki.jamesdooley.us/index.php?title=Template:NavFrame&amp;diff=600</id>
		<title>Template:NavFrame</title>
		<link rel="alternate" type="text/html" href="http://wiki.jamesdooley.us/index.php?title=Template:NavFrame&amp;diff=600"/>
				<updated>2015-04-08T13:19:53Z</updated>
		
		<summary type="html">&lt;p&gt;Smsldoo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;NavFrame {{#ifeq:{{{collapse|}}}|{{{collapse|-}}}|nocollapse|collapsed}} {{{frameClass|}}}&amp;quot; style=&amp;quot;{{{frameStyle|}}}&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;NavHead {{{headClass|}}}&amp;quot; style=&amp;quot;{{{headStyle|}}}&amp;quot;&amp;gt;{{{head|}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;NavContent {{{contentClass|}}}&amp;quot; style=&amp;quot;{{{contentStyle|}}}&amp;quot;&amp;gt;&lt;br /&gt;
{{{content|}}}&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Usage ==&lt;br /&gt;
General usage layout is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{NavFrame&lt;br /&gt;
|head=Text displayed in the header&lt;br /&gt;
|content=Text displayed in the content area&lt;br /&gt;
Multiple lines are allowed.&lt;br /&gt;
|collapse Automatically collapse the content area&lt;br /&gt;
|[frame|head|content]Class= CSS class for a specific element&lt;br /&gt;
|[frame|head|content]Style= CSS style for a specific element&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{NavFrame&lt;br /&gt;
|head=Text displayed in the header&lt;br /&gt;
|content=Text displayed in the content area&lt;br /&gt;
&lt;br /&gt;
Multiple lines are allowed.&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{NavFrame&lt;br /&gt;
|head=Text displayed in the header&lt;br /&gt;
|content=Text displayed in the content area&lt;br /&gt;
&lt;br /&gt;
Multiple lines are allowed.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Collapsed===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{NavFrame&lt;br /&gt;
|collapse&lt;br /&gt;
|head=Text displayed in the header&lt;br /&gt;
|content=Text displayed in the content area&lt;br /&gt;
&lt;br /&gt;
Multiple lines are allowed.&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{NavFrame&lt;br /&gt;
|collapse&lt;br /&gt;
|head=Text displayed in the header&lt;br /&gt;
|content=Text displayed in the content area&lt;br /&gt;
&lt;br /&gt;
Multiple lines are allowed.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Smsldoo</name></author>	</entry>

	<entry>
		<id>http://wiki.jamesdooley.us/index.php?title=Template:NavFrame&amp;diff=599</id>
		<title>Template:NavFrame</title>
		<link rel="alternate" type="text/html" href="http://wiki.jamesdooley.us/index.php?title=Template:NavFrame&amp;diff=599"/>
				<updated>2015-04-08T13:18:19Z</updated>
		
		<summary type="html">&lt;p&gt;Smsldoo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;NavFrame {{#if:{{{collapse|}}}|nocollapse|collapsed}} {{{frameClass|}}}&amp;quot; style=&amp;quot;{{{frameStyle|}}}&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;NavHead {{{headClass|}}}&amp;quot; style=&amp;quot;{{{headStyle|}}}&amp;quot;&amp;gt;{{{head|}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;NavContent {{{contentClass|}}}&amp;quot; style=&amp;quot;{{{contentStyle|}}}&amp;quot;&amp;gt;&lt;br /&gt;
{{{content|}}}&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Usage ==&lt;br /&gt;
General usage layout is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{NavFrame&lt;br /&gt;
|head=Text displayed in the header&lt;br /&gt;
|content=Text displayed in the content area&lt;br /&gt;
Multiple lines are allowed.&lt;br /&gt;
|collapse Automatically collapse the content area&lt;br /&gt;
|[frame|head|content]Class= CSS class for a specific element&lt;br /&gt;
|[frame|head|content]Style= CSS style for a specific element&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{NavFrame&lt;br /&gt;
|head=Text displayed in the header&lt;br /&gt;
|content=Text displayed in the content area&lt;br /&gt;
&lt;br /&gt;
Multiple lines are allowed.&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{NavFrame&lt;br /&gt;
|head=Text displayed in the header&lt;br /&gt;
|content=Text displayed in the content area&lt;br /&gt;
&lt;br /&gt;
Multiple lines are allowed.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Collapsed===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{NavFrame&lt;br /&gt;
|collapse&lt;br /&gt;
|head=Text displayed in the header&lt;br /&gt;
|content=Text displayed in the content area&lt;br /&gt;
&lt;br /&gt;
Multiple lines are allowed.&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{NavFrame&lt;br /&gt;
|collapse&lt;br /&gt;
|head=Text displayed in the header&lt;br /&gt;
|content=Text displayed in the content area&lt;br /&gt;
&lt;br /&gt;
Multiple lines are allowed.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Smsldoo</name></author>	</entry>

	<entry>
		<id>http://wiki.jamesdooley.us/index.php?title=Template:NavFrame&amp;diff=598</id>
		<title>Template:NavFrame</title>
		<link rel="alternate" type="text/html" href="http://wiki.jamesdooley.us/index.php?title=Template:NavFrame&amp;diff=598"/>
				<updated>2015-04-08T13:15:03Z</updated>
		
		<summary type="html">&lt;p&gt;Smsldoo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;NavFrame {{#if:{{{collapse}}}|nocollapse|collapsed}} {{{frameClass|}}}&amp;quot; style=&amp;quot;{{{frameStyle|}}}&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;NavHead {{{headClass|}}}&amp;quot; style=&amp;quot;{{{headStyle|}}}&amp;quot;&amp;gt;{{{head|}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;NavContent {{{contentClass|}}}&amp;quot; style=&amp;quot;{{{contentStyle|}}}&amp;quot;&amp;gt;&lt;br /&gt;
{{{content|}}}&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Usage ==&lt;br /&gt;
General usage layout is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{NavFrame&lt;br /&gt;
|head=Text displayed in the header&lt;br /&gt;
|content=Text displayed in the content area&lt;br /&gt;
Multiple lines are allowed.&lt;br /&gt;
|collapse Automatically collapse the content area&lt;br /&gt;
|[frame|head|content]Class= CSS class for a specific element&lt;br /&gt;
|[frame|head|content]Style= CSS style for a specific element&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{NavFrame&lt;br /&gt;
|head=Text displayed in the header&lt;br /&gt;
|content=Text displayed in the content area&lt;br /&gt;
&lt;br /&gt;
Multiple lines are allowed.&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{NavFrame&lt;br /&gt;
|head=Text displayed in the header&lt;br /&gt;
|content=Text displayed in the content area&lt;br /&gt;
&lt;br /&gt;
Multiple lines are allowed.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Collapsed===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{NavFrame&lt;br /&gt;
|collapse&lt;br /&gt;
|head=Text displayed in the header&lt;br /&gt;
|content=Text displayed in the content area&lt;br /&gt;
&lt;br /&gt;
Multiple lines are allowed.&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{NavFrame&lt;br /&gt;
|collapse&lt;br /&gt;
|head=Text displayed in the header&lt;br /&gt;
|content=Text displayed in the content area&lt;br /&gt;
&lt;br /&gt;
Multiple lines are allowed.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Smsldoo</name></author>	</entry>

	<entry>
		<id>http://wiki.jamesdooley.us/index.php?title=Template:NavFrame&amp;diff=597</id>
		<title>Template:NavFrame</title>
		<link rel="alternate" type="text/html" href="http://wiki.jamesdooley.us/index.php?title=Template:NavFrame&amp;diff=597"/>
				<updated>2015-04-08T13:14:24Z</updated>
		
		<summary type="html">&lt;p&gt;Smsldoo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;NavFrame {{#if:{{{collapse}}}|nocollapse|collapsed}} {{{frameClass|}}}&amp;quot; style=&amp;quot;{{{frameStyle|}}}&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;NavHead {{{headClass|}}}&amp;quot; style=&amp;quot;{{{headStyle|}}}&amp;quot;&amp;gt;{{{head|}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;NavContent {{{contentClass|}}}&amp;quot; style=&amp;quot;{{{contentStyle|}}}&amp;quot;&amp;gt;&lt;br /&gt;
{{{content|}}}&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Usage ==&lt;br /&gt;
General usage layout is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{NavFrame&lt;br /&gt;
|head=Text displayed in the header&lt;br /&gt;
|content=Text displayed in the content area&lt;br /&gt;
Multiple lines are allowed.&lt;br /&gt;
|collapse Automatically collapse the content area&lt;br /&gt;
|[frame|head|content]Class= CSS class for a specific element&lt;br /&gt;
|[frame|head|content]Style= CSS style for a specific element&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{NavFrame&lt;br /&gt;
|head=Text displayed in the header&lt;br /&gt;
|content=Text displayed in the content area&lt;br /&gt;
&lt;br /&gt;
Multiple lines are allowed.&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{NavFrame&lt;br /&gt;
|head=Text displayed in the header&lt;br /&gt;
|content=Text displayed in the content area&lt;br /&gt;
&lt;br /&gt;
Multiple lines are allowed.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Collapsed===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{NavFrame&lt;br /&gt;
|head=Text displayed in the header&lt;br /&gt;
|content=Text displayed in the content area&lt;br /&gt;
&lt;br /&gt;
Multiple lines are allowed.&lt;br /&gt;
|collapse&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{NavFrame&lt;br /&gt;
|head=Text displayed in the header&lt;br /&gt;
|content=Text displayed in the content area&lt;br /&gt;
&lt;br /&gt;
Multiple lines are allowed.&lt;br /&gt;
|collapse&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Smsldoo</name></author>	</entry>

	<entry>
		<id>http://wiki.jamesdooley.us/index.php?title=MediaWiki:Common.css&amp;diff=596</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="http://wiki.jamesdooley.us/index.php?title=MediaWiki:Common.css&amp;diff=596"/>
				<updated>2015-04-08T13:11:37Z</updated>
		
		<summary type="html">&lt;p&gt;Smsldoo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
&lt;br /&gt;
.mbox_default {&lt;br /&gt;
 padding: 0 0 0 25px;&lt;br /&gt;
 border: ridge 5px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox_warning {&lt;br /&gt;
 border-color: red;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox_caution {&lt;br /&gt;
 border-color: yellow;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox_info {&lt;br /&gt;
 border-color: blue;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox_centos{&lt;br /&gt;
 border-color: gold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox_ubuntu{&lt;br /&gt;
 border-color: #DD4814;&lt;br /&gt;
}&lt;br /&gt;
* Standard Navigationsleisten, aka box hiding thingy&lt;br /&gt;
   from .de.  Documentation at [[Wikipedia:NavFrame]]. */&lt;br /&gt;
div.NavFrame {&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 4px;&lt;br /&gt;
    border: 1px solid #aaa;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    border-collapse: collapse;&lt;br /&gt;
    font-size: 95%;&lt;br /&gt;
}&lt;br /&gt;
div.NavFrame + div.NavFrame {&lt;br /&gt;
    border-top-style: none;&lt;br /&gt;
    border-top-style: hidden;&lt;br /&gt;
}&lt;br /&gt;
div.NavPic {&lt;br /&gt;
    background-color: #fff;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 2px;&lt;br /&gt;
    /* @noflip */&lt;br /&gt;
    float: left;&lt;br /&gt;
}&lt;br /&gt;
div.NavFrame div.NavHead {&lt;br /&gt;
    height: 1.6em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    background-color: #ccf;&lt;br /&gt;
    position: relative;&lt;br /&gt;
}&lt;br /&gt;
div.NavFrame p,&lt;br /&gt;
div.NavFrame div.NavContent,&lt;br /&gt;
div.NavFrame div.NavContent p {&lt;br /&gt;
    font-size: 100%;&lt;br /&gt;
}&lt;br /&gt;
div.NavEnd {&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
    line-height: 1px;&lt;br /&gt;
    clear: both;&lt;br /&gt;
}&lt;br /&gt;
a.NavToggle {&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    top: 0;&lt;br /&gt;
    /* @noflip */&lt;br /&gt;
    right: 3px;&lt;br /&gt;
    font-weight: normal;&lt;br /&gt;
    font-size: 90%;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Smsldoo</name></author>	</entry>

	<entry>
		<id>http://wiki.jamesdooley.us/index.php?title=MediaWiki:Common.js&amp;diff=595</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="http://wiki.jamesdooley.us/index.php?title=MediaWiki:Common.js&amp;diff=595"/>
				<updated>2015-04-08T13:11:16Z</updated>
		
		<summary type="html">&lt;p&gt;Smsldoo: Created page with &amp;quot;/* Any JavaScript here will be loaded for all users on every page load. */ /**  * Dynamic Navigation Bars. See Wikipedia:NavFrame  *   * Based on script from en.wikipedia....&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
/**&lt;br /&gt;
 * Dynamic Navigation Bars. See [[Wikipedia:NavFrame]]&lt;br /&gt;
 * &lt;br /&gt;
 * Based on script from en.wikipedia.org, 2008-09-15.&lt;br /&gt;
 *&lt;br /&gt;
 * @source www.mediawiki.org/wiki/MediaWiki:Gadget-NavFrame.js&lt;br /&gt;
 * @maintainer Helder.wiki, 2012–2013&lt;br /&gt;
 * @maintainer Krinkle, 2013&lt;br /&gt;
 */&lt;br /&gt;
( function () {&lt;br /&gt;
 &lt;br /&gt;
// Set up the words in your language&lt;br /&gt;
var collapseCaption = 'hide';&lt;br /&gt;
var expandCaption = 'show';&lt;br /&gt;
 &lt;br /&gt;
var navigationBarHide = '[' + collapseCaption + ']';&lt;br /&gt;
var navigationBarShow = '[' + expandCaption + ']';&lt;br /&gt;
 &lt;br /&gt;
/**&lt;br /&gt;
 * Shows and hides content and picture (if available) of navigation bars.&lt;br /&gt;
 *&lt;br /&gt;
 * @param {number} indexNavigationBar The index of navigation bar to be toggled&lt;br /&gt;
 * @param {jQuery.Event} e Event object&lt;br /&gt;
 */&lt;br /&gt;
function toggleNavigationBar( indexNavigationBar, e ) {&lt;br /&gt;
	var navChild,&lt;br /&gt;
		navToggle = document.getElementById( 'NavToggle' + indexNavigationBar ),&lt;br /&gt;
		navFrame = document.getElementById( 'NavFrame' + indexNavigationBar );&lt;br /&gt;
 &lt;br /&gt;
	// Prevent browser from jumping to href &amp;quot;#&amp;quot;&lt;br /&gt;
	e.preventDefault();&lt;br /&gt;
 &lt;br /&gt;
	if ( !navFrame || !navToggle ) {&lt;br /&gt;
		return false;&lt;br /&gt;
	}&lt;br /&gt;
 &lt;br /&gt;
	// If shown now&lt;br /&gt;
	if ( navToggle.firstChild.data == navigationBarHide ) {&lt;br /&gt;
		for ( navChild = navFrame.firstChild; navChild != null; navChild = navChild.nextSibling ) {&lt;br /&gt;
			if ( hasClass( navChild, 'NavPic' ) ) {&lt;br /&gt;
				navChild.style.display = 'none';&lt;br /&gt;
			}&lt;br /&gt;
			if ( hasClass( navChild, 'NavContent' ) ) {&lt;br /&gt;
				navChild.style.display = 'none';&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		navToggle.firstChild.data = navigationBarShow;&lt;br /&gt;
 &lt;br /&gt;
	// If hidden now&lt;br /&gt;
	} else if ( navToggle.firstChild.data == navigationBarShow ) {&lt;br /&gt;
		for ( navChild = navFrame.firstChild; navChild != null; navChild = navChild.nextSibling ) {&lt;br /&gt;
			if ( $( navChild ).hasClass( 'NavPic' ) || $( navChild ).hasClass( 'NavContent' ) ) {&lt;br /&gt;
				navChild.style.display = 'block';&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		navToggle.firstChild.data = navigationBarHide;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
/**&lt;br /&gt;
 * Adds show/hide-button to navigation bars.&lt;br /&gt;
 *&lt;br /&gt;
 * @param {jQuery} $content&lt;br /&gt;
 */&lt;br /&gt;
function createNavigationBarToggleButton( $content ) {&lt;br /&gt;
	var i, j, navFrame, navToggle, navToggleText, navChild,&lt;br /&gt;
		indexNavigationBar = 0,&lt;br /&gt;
		navFrames = $content.find( 'div.NavFrame' ).toArray();&lt;br /&gt;
 &lt;br /&gt;
	// Iterate over all (new) nav frames&lt;br /&gt;
	for ( i = 0; i &amp;lt; navFrames.length; i++ ) {&lt;br /&gt;
		navFrame = navFrames[i];&lt;br /&gt;
		// If found a navigation bar&lt;br /&gt;
		indexNavigationBar++;&lt;br /&gt;
		navToggle = document.createElement( 'a' );&lt;br /&gt;
		navToggle.className = 'NavToggle';&lt;br /&gt;
		navToggle.setAttribute( 'id', 'NavToggle' + indexNavigationBar );&lt;br /&gt;
		navToggle.setAttribute( 'href', '#' );&lt;br /&gt;
		$( navToggle ).on( 'click', $.proxy( toggleNavigationBar, null, indexNavigationBar ) );&lt;br /&gt;
 &lt;br /&gt;
		navToggleText = document.createTextNode( navigationBarHide );&lt;br /&gt;
		for ( navChild = navFrame.firstChild; navChild != null; navChild = navChild.nextSibling ) {&lt;br /&gt;
			if ( $( navChild ).hasClass( 'NavPic' ) || $( navChild ).hasClass( 'NavContent' ) ) {&lt;br /&gt;
				if ( navChild.style.display == 'none' ) {&lt;br /&gt;
					navToggleText = document.createTextNode( navigationBarShow );&lt;br /&gt;
					break;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
 &lt;br /&gt;
		navToggle.appendChild( navToggleText );&lt;br /&gt;
		// Find the NavHead and attach the toggle link (Must be this complicated because Moz's firstChild handling is borked)&lt;br /&gt;
		for ( j = 0; j &amp;lt; navFrame.childNodes.length; j++ ) {&lt;br /&gt;
			if ( $( navFrame.childNodes[j] ).hasClass( 'NavHead' ) ) {&lt;br /&gt;
				navFrame.childNodes[j].appendChild( navToggle );&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		navFrame.setAttribute( 'id', 'NavFrame' + indexNavigationBar );&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
mw.hook( 'wikipage.content' ).add( createNavigationBarToggleButton );&lt;br /&gt;
 &lt;br /&gt;
}());&lt;/div&gt;</summary>
		<author><name>Smsldoo</name></author>	</entry>

	<entry>
		<id>http://wiki.jamesdooley.us/index.php?title=Template:NavFrame&amp;diff=594</id>
		<title>Template:NavFrame</title>
		<link rel="alternate" type="text/html" href="http://wiki.jamesdooley.us/index.php?title=Template:NavFrame&amp;diff=594"/>
				<updated>2015-04-08T13:08:43Z</updated>
		
		<summary type="html">&lt;p&gt;Smsldoo: Created page with &amp;quot;&amp;lt;includeonly&amp;gt; &amp;lt;div class=&amp;quot;NavFrame {{#if:{{{collapse}}}||collapsed}} {{{frameClass|}}}&amp;quot; style=&amp;quot;{{{frameStyle|}}}&amp;quot;&amp;gt;   &amp;lt;div class=&amp;quot;NavHead {{{headClass|}}}&amp;quot; style=&amp;quot;{{{headStyle|...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;NavFrame {{#if:{{{collapse}}}||collapsed}} {{{frameClass|}}}&amp;quot; style=&amp;quot;{{{frameStyle|}}}&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;NavHead {{{headClass|}}}&amp;quot; style=&amp;quot;{{{headStyle|}}}&amp;quot;&amp;gt;{{{head|}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;NavContent {{{contentClass|}}}&amp;quot; style=&amp;quot;{{{contentStyle|}}}&amp;quot;&amp;gt;&lt;br /&gt;
{{{content|}}}&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Usage ==&lt;br /&gt;
General usage layout is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{NavFrame&lt;br /&gt;
|head=Text displayed in the header&lt;br /&gt;
|content=Text displayed in the content area&lt;br /&gt;
Multiple lines are allowed.&lt;br /&gt;
|collapse Automatically collapse the content area&lt;br /&gt;
|[frame|head|content]Class= CSS class for a specific element&lt;br /&gt;
|[frame|head|content]Style= CSS style for a specific element&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{NavFrame&lt;br /&gt;
|head=Text displayed in the header&lt;br /&gt;
|content=Text displayed in the content area&lt;br /&gt;
&lt;br /&gt;
Multiple lines are allowed.&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{NavFrame&lt;br /&gt;
|head=Text displayed in the header&lt;br /&gt;
|content=Text displayed in the content area&lt;br /&gt;
&lt;br /&gt;
Multiple lines are allowed.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Collapsed===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{NavFrame&lt;br /&gt;
|head=Text displayed in the header&lt;br /&gt;
|content=Text displayed in the content area&lt;br /&gt;
&lt;br /&gt;
Multiple lines are allowed.&lt;br /&gt;
|collapse&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{NavFrame&lt;br /&gt;
|head=Text displayed in the header&lt;br /&gt;
|content=Text displayed in the content area&lt;br /&gt;
&lt;br /&gt;
Multiple lines are allowed.&lt;br /&gt;
|collapse&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Smsldoo</name></author>	</entry>

	<entry>
		<id>http://wiki.jamesdooley.us/index.php?title=Add_Apache_Bytes&amp;diff=593</id>
		<title>Add Apache Bytes</title>
		<link rel="alternate" type="text/html" href="http://wiki.jamesdooley.us/index.php?title=Add_Apache_Bytes&amp;diff=593"/>
				<updated>2015-03-06T16:14:38Z</updated>
		
		<summary type="html">&lt;p&gt;Smsldoo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:One Liners]]&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
This one liner is designed to add up the apache send or receive byte size for a specific time period and return the IPs that use the most.&lt;br /&gt;
&lt;br /&gt;
==Script==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;&lt;br /&gt;
daterange='06/Mar/2015:09'; \&lt;br /&gt;
domlog='/usr/local/apache/domlogs/petitesy/petitesymphony.com'; \&lt;br /&gt;
for ip in $(grep $daterange $domlog | awk '{print $1}' | sort | uniq |sort); \&lt;br /&gt;
   do grep $daterange $domlog | grep $ip | awk &amp;quot;{total+=\$10}END{printf \&amp;quot;%15s: %'d\n\&amp;quot;, \&amp;quot;$ip\&amp;quot;, total}&amp;quot;; \&lt;br /&gt;
done | sort -n -k 2 | tail&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==What to change==&lt;br /&gt;
daterange; Date range is the partial date you would like to search for.&lt;br /&gt;
For example 06/Mar/2015:09 will match the 9th hour of March 6th 2015.&lt;br /&gt;
06/Mar/2015:09:20 will match 9:20 on March 6th 2015.&lt;br /&gt;
&lt;br /&gt;
domlog; This is the specific domlog file you would like to look at. Technically you can set this to a wild card, but the awk will need to be adjusted to take in to account the file name.&lt;br /&gt;
&lt;br /&gt;
If you have a custom domlog setup with received bytes in its own column you can change the command to add up that column instead:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;&lt;br /&gt;
daterange='06/Mar/2015:09'; \&lt;br /&gt;
domlog='/usr/local/apache/domlogs/petitesy/petitesymphony.com'; \&lt;br /&gt;
for ip in $(grep $daterange $domlog | awk '{print $1}' | sort | uniq |sort); \&lt;br /&gt;
   do grep $daterange $domlog | grep $ip | awk &amp;quot;{total+=\$6}END{printf \&amp;quot;%15s: %'d\n\&amp;quot;, \&amp;quot;$ip\&amp;quot;, total}&amp;quot;; \&lt;br /&gt;
done | sort -n -k 2 | tail&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Obviously this depends on what column you are wanting to add up.&lt;/div&gt;</summary>
		<author><name>Smsldoo</name></author>	</entry>

	<entry>
		<id>http://wiki.jamesdooley.us/index.php?title=Add_Apache_Bytes&amp;diff=592</id>
		<title>Add Apache Bytes</title>
		<link rel="alternate" type="text/html" href="http://wiki.jamesdooley.us/index.php?title=Add_Apache_Bytes&amp;diff=592"/>
				<updated>2015-03-06T16:02:49Z</updated>
		
		<summary type="html">&lt;p&gt;Smsldoo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:One Liners]]&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
This one liner is designed to add up the apache send or receive byte size for a specific time period and return the IPs that use the most.&lt;br /&gt;
&lt;br /&gt;
==Script==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;&lt;br /&gt;
daterange='06/Mar/2015:09'; \&lt;br /&gt;
domlog='/usr/local/apache/domlogs/petitesy/petitesymphony.com'; \&lt;br /&gt;
for ip in $(grep $daterange $domlog | awk '{print $1}' | sort | uniq |sort); \&lt;br /&gt;
   do grep $daterange $domlog | grep $ip | awk &amp;quot;{total+=\$10}END{printf \&amp;quot;%15s: %'d\n\&amp;quot;, \&amp;quot;$ip\&amp;quot;, total}&amp;quot;; \&lt;br /&gt;
done | sort -n -k 2 | tail&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==What to change==&lt;br /&gt;
daterange; Date range is the partial date you would like to search for.&lt;br /&gt;
For example 06/Mar/2015:09 will match the 9th hour of March 6th 2015.&lt;br /&gt;
06/Mar/2015:09:20 will match 9:20 on March 6th 2015.&lt;br /&gt;
&lt;br /&gt;
domlog; This is the specific domlog file you would like to look at. Technically you can set this to a wild card, but the awk will need to be adjusted to take in to account the file name.&lt;br /&gt;
&lt;br /&gt;
If you have a custom domlog setup with received bytes in its own column you can change the command to add up that column instead:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;&lt;br /&gt;
daterange='06/Mar/2015:09'; \&lt;br /&gt;
domlog='/usr/local/apache/domlogs/petitesy/petitesymphony.com'; \&lt;br /&gt;
for ip in $(grep $daterange $domlog | awk '{print $1}' | sort | uniq |sort); \&lt;br /&gt;
   do grep $daterange $domlog | grep $ip | awk &amp;quot;{total+=\$7}END{printf \&amp;quot;%15s: %'d\n\&amp;quot;, \&amp;quot;$ip\&amp;quot;, total}&amp;quot;; \&lt;br /&gt;
done | sort -n -k 2 | tail&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Obviously this depends on what column you are wanting to add up.&lt;/div&gt;</summary>
		<author><name>Smsldoo</name></author>	</entry>

	<entry>
		<id>http://wiki.jamesdooley.us/index.php?title=Add_Apache_Bytes&amp;diff=591</id>
		<title>Add Apache Bytes</title>
		<link rel="alternate" type="text/html" href="http://wiki.jamesdooley.us/index.php?title=Add_Apache_Bytes&amp;diff=591"/>
				<updated>2015-03-06T15:58:27Z</updated>
		
		<summary type="html">&lt;p&gt;Smsldoo: Created page with &amp;quot;Category:One Liners ==Overview==  This one liner is designed to add up the apache send or receive byte size for a specific time period and return the IPs that use the most...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:One Liners]]&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
This one liner is designed to add up the apache send or receive byte size for a specific time period and return the IPs that use the most.&lt;br /&gt;
&lt;br /&gt;
==Script==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;&lt;br /&gt;
daterange='06/Mar/2015:09'; \&lt;br /&gt;
domlog='/usr/local/apache/domlogs/petitesy/petitesymphony.com'; \&lt;br /&gt;
for ip in $(grep $daterange $domlog | awk '{print $1}' | sort | uniq |sort); \&lt;br /&gt;
   do grep $daterange $domlog | grep $ip | awk &amp;quot;{total+=\$10}END{printf \&amp;quot;%15s: %'d\n\&amp;quot;, $ip, total}&amp;quot;; \&lt;br /&gt;
done | sort -n -k 2 | tail&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==What to change==&lt;br /&gt;
daterange; Date range is the partial date you would like to search for.&lt;br /&gt;
For example 06/Mar/2015:09 will match the 9th hour of March 6th 2015.&lt;br /&gt;
06/Mar/2015:09:20 will match 9:20 on March 6th 2015.&lt;br /&gt;
&lt;br /&gt;
domlog; This is the specific domlog file you would like to look at. Technically you can set this to a wild card, but the awk will need to be adjusted to take in to account the file name.&lt;br /&gt;
&lt;br /&gt;
If you have a custom domlog setup with received bytes in its own column you can change the command to add up that column instead:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;&lt;br /&gt;
daterange='06/Mar/2015:09'; \&lt;br /&gt;
domlog='/usr/local/apache/domlogs/petitesy/petitesymphony.com'; \&lt;br /&gt;
for ip in $(grep $daterange $domlog | awk '{print $1}' | sort | uniq |sort); \&lt;br /&gt;
   do grep $daterange $domlog | grep $ip | awk &amp;quot;{total+=\$7}END{printf \&amp;quot;%15s: %'d\n\&amp;quot;, $ip, total}&amp;quot;; \&lt;br /&gt;
done | sort -n -k 2 | tail&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Obviously this depends on what column you are wanting to add up.&lt;/div&gt;</summary>
		<author><name>Smsldoo</name></author>	</entry>

	<entry>
		<id>http://wiki.jamesdooley.us/index.php?title=Count*.gif%3F_detection_and_removal&amp;diff=590</id>
		<title>Count*.gif? detection and removal</title>
		<link rel="alternate" type="text/html" href="http://wiki.jamesdooley.us/index.php?title=Count*.gif%3F_detection_and_removal&amp;diff=590"/>
				<updated>2014-12-09T19:32:47Z</updated>
		
		<summary type="html">&lt;p&gt;Smsldoo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Misc]]&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
Lots of script fu to find infected files with tracking codes. &lt;br /&gt;
&lt;br /&gt;
Detects php and htm* files that show known signatures.&lt;br /&gt;
&lt;br /&gt;
Code to clean up infected php and htm* files.&lt;br /&gt;
&lt;br /&gt;
==Script==&lt;br /&gt;
&lt;br /&gt;
===Combined Search===&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;find /home*/ -type f -name &amp;quot;*.htm*&amp;quot; -print0 -o -type f -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -l &amp;quot;airschk\|teameter\|milkcounter\|countimg.gif\|countbk.gif&amp;quot; &amp;gt;&amp;gt; malware_hits.txt&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===HTML===&lt;br /&gt;
====Detect infected files====&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;find -type f -name &amp;quot;*htm*&amp;quot; -print0 | xargs -0 grep -l &amp;quot;airschk\|teameter\|milkcounter\|countimg.gif\|countbk.gif&amp;quot; &amp;gt;&amp;gt; malware_hits.txt&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Get detected string====&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;grep &amp;quot;airschk\|teameter\|milkcounter\|countimg.gif\|countbk.gif&amp;quot; `head -1 malware_hits.txt`&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The output will need to be cleaned up to just the DIV tags and change /'s to \/&lt;br /&gt;
&lt;br /&gt;
====Replace delete code====&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;OIFS=$IFS;IFS=$'\n';for i in $(cat malware_hits.txt); do sed -i 's/&amp;lt;!CODE!&amp;gt;//g' $i; done;IFS=$OIFS&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===PHP===&lt;br /&gt;
====Detect infected files (ignore backups)====&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;find -type f -name &amp;quot;*php&amp;quot; -print0 | xargs -0 grep -l &amp;quot;airschk\|teameter\|milkcounter\|countimg.gif\|countbk.gif&amp;quot; | grep -v &amp;quot;air.bak&amp;quot; &amp;gt;&amp;gt; malware_hits.txt&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Backup and wipe infected code====&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;OIFS=$IFS;IFS=$'\n';for i in $(cat malware_hits.txt); do mv $i $i.air.bak;s_line=&amp;quot;1&amp;quot;;e_line=$(egrep -nri &amp;quot;^\?&amp;gt;&amp;lt;(\?php|html)&amp;quot; $i.air.bak | head -n1 | cut -d':' -f1); ne_line=$(( $e_line - 1 )); sed -e &amp;quot;${s_line},${ne_line}d&amp;quot; -e &amp;quot;$e_line s/^\?&amp;gt;//&amp;quot; $i.air.bak &amp;gt; $i; chown `pwd | cut -d &amp;quot;/&amp;quot; -f3`. $i; done;IFS=$OIFS&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Alternate code if using common tags====&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;OIFS=$IFS;IFS=$'\n';for i in $(cat malware_hits.txt); do mv $i $i.air.bak; sed '/\/\/{{/,/\/\/}}/d' $i.air.bak &amp;gt; $i; chown `pwd | cut -d &amp;quot;/&amp;quot; -f3`. $i; done;IFS=$OIFS&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Additional method to delete code====&lt;br /&gt;
This method works if the code is on a single line and has normal code also on the line:&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;&lt;br /&gt;
OIFS=$IFS;IFS=$'\n';for i in $(cat malware_hits.txt); do cp $i $i.mal.bak; sed -i &amp;quot;s/&amp;lt;script&amp;gt;eval[^\!]*\!-- uy7gdr5332rkmn --&amp;gt;//g&amp;quot; $i; done;IFS=$OIFS&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Restore all backups in case of fire====&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;OIFS=$IFS;IFS=$'\n';for i in $(cat malware_hits.txt); do mv -f $i.air.bak $i; done;IFS=$OIFS&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Delete backups====&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;find -type f -name &amp;quot;*air.bak&amp;quot; -exec rm -f {} \;&amp;lt;/source&amp;gt;&lt;br /&gt;
==What to change==&lt;br /&gt;
===&amp;lt;!CODE!&amp;gt;===&lt;br /&gt;
This needs to be changed with the uniq code signature. This changes per site and per script kiddie.&lt;/div&gt;</summary>
		<author><name>Smsldoo</name></author>	</entry>

	<entry>
		<id>http://wiki.jamesdooley.us/index.php?title=Test&amp;diff=589</id>
		<title>Test</title>
		<link rel="alternate" type="text/html" href="http://wiki.jamesdooley.us/index.php?title=Test&amp;diff=589"/>
				<updated>2014-10-19T18:35:20Z</updated>
		
		<summary type="html">&lt;p&gt;Smsldoo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{code&lt;br /&gt;
|style=&amp;quot;border-size: 5px;&amp;quot;&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
rm -rf $DIRECTORY&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
rm -rf /&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Mbox&lt;br /&gt;
|type=warning&lt;br /&gt;
|msg= Warning Message&lt;br /&gt;
}}&lt;br /&gt;
{{Mbox&lt;br /&gt;
|type=caution&lt;br /&gt;
|msg= Caution Message&lt;br /&gt;
}}&lt;br /&gt;
{{Mbox&lt;br /&gt;
|type=info&lt;br /&gt;
|msg= Info Message&lt;br /&gt;
}}&lt;br /&gt;
{{Mbox&lt;br /&gt;
|type=centos&lt;br /&gt;
|msg= CentOS Message&lt;br /&gt;
}}&lt;br /&gt;
{{Mbox&lt;br /&gt;
|type=ubuntu&lt;br /&gt;
|msg= Ubuntu Message&lt;br /&gt;
}}&lt;br /&gt;
{{Mbox&lt;br /&gt;
|type=warning&lt;br /&gt;
|msg= Warning Message&lt;br /&gt;
|small=1&lt;br /&gt;
}}&lt;br /&gt;
{{Mbox&lt;br /&gt;
|type=caution&lt;br /&gt;
|msg= Caution Message&lt;br /&gt;
|small=1&lt;br /&gt;
}}&lt;br /&gt;
{{Mbox&lt;br /&gt;
|type=info&lt;br /&gt;
|msg= Info Message&lt;br /&gt;
|small=1&lt;br /&gt;
}}&lt;br /&gt;
{{Mbox&lt;br /&gt;
|type=centos&lt;br /&gt;
|msg= CentOS Message&lt;br /&gt;
|small=1&lt;br /&gt;
}}&lt;br /&gt;
{{Mbox&lt;br /&gt;
|type=ubuntu&lt;br /&gt;
|msg= Ubuntu Message&lt;br /&gt;
|small=1&lt;br /&gt;
}}&lt;br /&gt;
{{Mbox&lt;br /&gt;
|type=warning&lt;br /&gt;
|image=none&lt;br /&gt;
|msg= Warning Message&lt;br /&gt;
|small=1&lt;br /&gt;
}}&lt;br /&gt;
{{Mbox&lt;br /&gt;
|type=caution&lt;br /&gt;
|image=none&lt;br /&gt;
|msg= Caution Message&lt;br /&gt;
|small=1&lt;br /&gt;
}}&lt;br /&gt;
{{Mbox&lt;br /&gt;
|type=info&lt;br /&gt;
|image=none&lt;br /&gt;
|msg= Info Message&lt;br /&gt;
|small=1&lt;br /&gt;
}}&lt;br /&gt;
{{Mbox&lt;br /&gt;
|type=centos&lt;br /&gt;
|image=none&lt;br /&gt;
|msg= CentOS Message&lt;br /&gt;
|small=1&lt;br /&gt;
}}&lt;br /&gt;
{{Mbox&lt;br /&gt;
|type=ubuntu&lt;br /&gt;
|image=none&lt;br /&gt;
|msg= Ubuntu Message&lt;br /&gt;
|small=1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Mbox&lt;br /&gt;
|type=step&lt;br /&gt;
|msg=if this works I will be afraid&lt;br /&gt;
|text= very very very afraid&lt;br /&gt;
{{mbox|small=1|type=warning|msg=What have I done}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Mbox|type=centos|text=&lt;br /&gt;
Test Test Test&lt;br /&gt;
{{Mbox|type=centos|text=&lt;br /&gt;
Test Test Test&lt;br /&gt;
{{Mbox|type=centos|text=&lt;br /&gt;
Test Test Test&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Smsldoo</name></author>	</entry>

	<entry>
		<id>http://wiki.jamesdooley.us/index.php?title=Ministat&amp;diff=588</id>
		<title>Ministat</title>
		<link rel="alternate" type="text/html" href="http://wiki.jamesdooley.us/index.php?title=Ministat&amp;diff=588"/>
				<updated>2014-08-09T11:41:54Z</updated>
		
		<summary type="html">&lt;p&gt;Smsldoo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Scripts]]&lt;br /&gt;
==Overview==&lt;br /&gt;
Down and dirty mini status viewer. Makes it easy to monitor several different sections of a server at the same time.&lt;br /&gt;
&lt;br /&gt;
Useful for monitoring a server that is having problems.&lt;br /&gt;
&lt;br /&gt;
The main concept is to minify the output of several sections in to a small terminal window, useful for monitoring a server when it is having problems or could at some point.&lt;br /&gt;
&lt;br /&gt;
Auto adjusts output based on size of the terminal.&lt;br /&gt;
&lt;br /&gt;
==Script==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
function checkmysql {&lt;br /&gt;
	cmdmysql=`mysql --batch -e 'show processlist;' | grep -v &amp;quot;Id&amp;quot; | cut -f6,5,4,8 | sed -e 's/\t/ /g' | sort -nr --key=3 | sed -e 's/ /\|/' -e 's/ /\|/' -e 's/ /\|/' | awk -v termwidth=&amp;quot;$termwidth&amp;quot; 'BEGIN {FS=&amp;quot;|&amp;quot;}; {termwidth=termwidth - 39; query=$4; query=substr(&amp;quot;'&amp;quot;${query}&amp;quot;'&amp;quot;,1,termwidth) }; { printf &amp;quot;%-3s%-17s%7-s%-&amp;quot; termwidth &amp;quot;s%-1s&amp;quot;,$3,$1,$2,$4,query; print &amp;quot;&amp;quot;; }' | sed '/^$/d' `&lt;br /&gt;
	if [[ $cmdmysql != &amp;quot;&amp;quot; ]]&lt;br /&gt;
	then&lt;br /&gt;
		wcmysql=`echo &amp;quot;$cmdmysql&amp;quot; | wc -l`&lt;br /&gt;
	else&lt;br /&gt;
		wcmysql=0&lt;br /&gt;
	fi&lt;br /&gt;
	return&lt;br /&gt;
}&lt;br /&gt;
function checkapache {&lt;br /&gt;
	if [ -d &amp;quot;/var/cpanel&amp;quot; ]&lt;br /&gt;
	then&lt;br /&gt;
		cmdapache=`service httpd status 2&amp;gt;&amp;amp;1 | sed -n '/requests\/sec/,/Scoreboard/p' | sed 'N;$!P;$!D;$d' | grep &amp;quot;requests/sec&amp;quot; -A 999`&lt;br /&gt;
	else&lt;br /&gt;
		cmdapache=`lynx --dump http://localhost/server-status 2&amp;gt;&amp;amp;1 | sed -n '/requests\/sec/,/Scoreboard/p' | sed 'N;$!P;$!D;$d' | grep &amp;quot;requests/sec&amp;quot; -A 999`&lt;br /&gt;
	fi&lt;br /&gt;
	if [[ $cmdapache != &amp;quot;&amp;quot; ]]&lt;br /&gt;
	then&lt;br /&gt;
		wcapache=`echo &amp;quot;$cmdapache&amp;quot; | wc -l`&lt;br /&gt;
	else&lt;br /&gt;
		wcapache=0&lt;br /&gt;
	fi&lt;br /&gt;
	return&lt;br /&gt;
}&lt;br /&gt;
function calclines {&lt;br /&gt;
	nline=`tput lines | awk '{print int(($1 - 14) / 3)}'`&lt;br /&gt;
	aline=`echo $nline 3 | awk '{print $1 + $2}'`&lt;br /&gt;
	if [ $nline -gt $wcmysql ]&lt;br /&gt;
	then&lt;br /&gt;
		nline=`echo $nline $wcmysql | awk '{print $1 * 2 - $2}'`&lt;br /&gt;
	fi&lt;br /&gt;
	return&lt;br /&gt;
}&lt;br /&gt;
function addseperator {&lt;br /&gt;
	printf &amp;quot;%$(tput cols)s\n&amp;quot;|tr ' ' '='&lt;br /&gt;
	return&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
termwidth=`tput cols`&lt;br /&gt;
cat /proc/loadavg&lt;br /&gt;
addseperator&lt;br /&gt;
&lt;br /&gt;
checkmysql&lt;br /&gt;
checkapache&lt;br /&gt;
calclines&lt;br /&gt;
&lt;br /&gt;
top -c -b -n 1 | grep -v &amp;quot;grep&amp;quot; | grep &amp;quot;PID&amp;quot; -A $nline&lt;br /&gt;
addseperator&lt;br /&gt;
&lt;br /&gt;
free | grep -v &amp;quot;cache:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if [ $wcmysql -gt 0 ]&lt;br /&gt;
then&lt;br /&gt;
	addseperator&lt;br /&gt;
	echo &amp;quot;$cmdmysql&amp;quot; | head -$nline&lt;br /&gt;
fi&lt;br /&gt;
if [ $wcapache -gt 0 ]&lt;br /&gt;
then&lt;br /&gt;
	addseperator&lt;br /&gt;
	echo &amp;quot;$cmdapache&amp;quot; | head -$aline&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
&lt;br /&gt;
Direct download and execution of script (auto mode) from ent.int server:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[bash,n]wget http://scripts.ent.liquidweb.com/ministat -O ministat; watch sh ministat; rm -f ministat&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Direct download and execution of script (auto mode) from this server:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[bash,n]wget http://svn.jamesdooley.us/svn/JDooley/Ministat/ministat.sh -O ministat; watch sh ministat; rm -f ministat&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==What to change==&lt;/div&gt;</summary>
		<author><name>Smsldoo</name></author>	</entry>

	<entry>
		<id>http://wiki.jamesdooley.us/index.php?title=MySQL_Memory_Usage_Verbose&amp;diff=587</id>
		<title>MySQL Memory Usage Verbose</title>
		<link rel="alternate" type="text/html" href="http://wiki.jamesdooley.us/index.php?title=MySQL_Memory_Usage_Verbose&amp;diff=587"/>
				<updated>2014-07-08T18:25:57Z</updated>
		
		<summary type="html">&lt;p&gt;Smsldoo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Misc]]&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
Perl script to calculate MySQL max memory allotment. &lt;br /&gt;
&lt;br /&gt;
Modified original code to search for cPanel defaults.&lt;br /&gt;
&lt;br /&gt;
This version also give a more verbose output then the original.&lt;br /&gt;
&lt;br /&gt;
==Script==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang='perl'&amp;gt;&lt;br /&gt;
#!/usr/bin/perl&lt;br /&gt;
#&lt;br /&gt;
# calculate mysqld memory consumption from my.cnf&lt;br /&gt;
# usage: mysql-memory-usage /path/to/my.cnf [/path/to/mysqld]&lt;br /&gt;
#&lt;br /&gt;
# $Id: mysql-memory-usage 228 2010-05-31 10:53:33Z schwenke $&lt;br /&gt;
 &lt;br /&gt;
my $mycnf= shift;&lt;br /&gt;
$mycnf= &amp;quot;/etc/my.cnf&amp;quot; unless $mycnf;&lt;br /&gt;
die &amp;quot;cannot read $mycnf\n&amp;quot; unless (-r $mycnf);&lt;br /&gt;
 &lt;br /&gt;
my $mysqld= shift;&lt;br /&gt;
unless ($mysqld) {&lt;br /&gt;
	# find mysqld relative to mysql&lt;br /&gt;
	$mysqld= `which mysqld` or $mysqld= `which mysql` or die;&lt;br /&gt;
	chomp $mysqld;&lt;br /&gt;
	$mysqld =~ s(bin/mysql$)(libexec/mysqld);&lt;br /&gt;
}&lt;br /&gt;
die &amp;quot;cannot execute $mysqld\n&amp;quot; unless (-x $mysqld);&lt;br /&gt;
 &lt;br /&gt;
# read configuration&lt;br /&gt;
my %conf;&lt;br /&gt;
open M, &amp;quot;$mysqld --defaults-file=$mycnf --help --verbose |&amp;quot; or die;&lt;br /&gt;
while (&amp;lt;M&amp;gt;) { # skip to parameter list&lt;br /&gt;
	last if (/^\-{5,} \-{5,}$/o);&lt;br /&gt;
}&lt;br /&gt;
while (&amp;lt;M&amp;gt;) {&lt;br /&gt;
	last if /^$/o;&lt;br /&gt;
	my ($var, $val)= split;&lt;br /&gt;
	$conf{$var}= $val;&lt;br /&gt;
}&lt;br /&gt;
close M;&lt;br /&gt;
 &lt;br /&gt;
# static memory consumption&lt;br /&gt;
my $static= $conf{'key_buffer_size'} + $conf{'query_cache_size'};&lt;br /&gt;
# has innodb&lt;br /&gt;
$static+= $conf{'innodb-buffer-pool-size'} + $conf{'innodb-log-buffer-size'}&lt;br /&gt;
+ $conf{'innodb-additional-mem-pool-size'} if (($conf{'innodb'} eq 'TRUE') or ($conf{'innodb'} eq 'ON'));&lt;br /&gt;
print &amp;quot;Static Memory Consumption\n&amp;quot;;&lt;br /&gt;
printf &amp;quot; %-10s key_buffer_size\n&amp;quot;, p($conf{'key_buffer_size'});&lt;br /&gt;
printf &amp;quot;+%-10s query_cache_size\n&amp;quot;, p($conf{'query_cache_size'});&lt;br /&gt;
if (($conf{'innodb'} eq 'TRUE') or ($conf{'innodb'} eq 'on')) {&lt;br /&gt;
	printf &amp;quot;+%-10s innodb-buffer-pool-size\n&amp;quot;, p($conf{'innodb-buffer-pool-size'});&lt;br /&gt;
	printf &amp;quot;+%-10s innodb-log-buffer-size\n&amp;quot;, p($conf{'innodb-log-buffer-size'});&lt;br /&gt;
	printf &amp;quot;+%-10s innodb-additional-mem-pool-size\n&amp;quot;, p($conf{'innodb-additional-mem-pool-size'});&lt;br /&gt;
}&lt;br /&gt;
printf &amp;quot;%-5s Total Static Memory\n\n&amp;quot;, p($static);&lt;br /&gt;
 &lt;br /&gt;
# per thread memory consumption&lt;br /&gt;
my $thread= $conf{'thread_stack'}&lt;br /&gt;
+ 2*$conf{'net_buffer_length'} + $conf{'read_buffer_size'}&lt;br /&gt;
+ $conf{'read_rnd_buffer_size'} + $conf{'sort_buffer_size'};&lt;br /&gt;
print &amp;quot;Per thread memory consumption\n&amp;quot;;&lt;br /&gt;
printf &amp;quot; %-10s thread_stack\n&amp;quot;, p($conf{'thread_stack'});&lt;br /&gt;
printf &amp;quot;+%-10s net_buffer_length 2x (%s)\n&amp;quot;, p($conf{'net_buffer_length'}), p(2*$conf{'net_buffer_length'});&lt;br /&gt;
printf &amp;quot;+%-10s read_buffer_size\n&amp;quot;, p($conf{'read_buffer_size'});&lt;br /&gt;
printf &amp;quot;+%-10s read_rnd_buffer_size\n&amp;quot;, p($conf{'read_rnd_buffer_size'});&lt;br /&gt;
printf &amp;quot;+%-10s sort_buffer_size\n&amp;quot;, p($conf{'sort_buffer_size'});&lt;br /&gt;
printf &amp;quot;%-5s Total Memory Per Thread\n\n&amp;quot;, p($thread);&lt;br /&gt;
 &lt;br /&gt;
# writes binlog&lt;br /&gt;
$thread += $conf{'binlog_cache_size'} if ($conf{'log-bin'} ne '(No');&lt;br /&gt;
printf &amp;quot; %-10s binlog_cache_size\n\n&amp;quot;, p($conf{'binlog_cache_size'}) if ($conf{'log-bin'} ne '(No');&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
# MyISAM repair thread(s)&lt;br /&gt;
my $repair= 0;&lt;br /&gt;
if ($conf{'myisam-recover'} ne 'OFF') {&lt;br /&gt;
	$repair+= $conf{'myisam_repair_threads'} * $conf{'myisam_sort_buffer_size'};&lt;br /&gt;
	print &amp;quot;MyISAM Repair Thread(s)\n&amp;quot;;&lt;br /&gt;
	printf &amp;quot; %-10s myisam_repair_threads\n&amp;quot;, p($conf{'myisam_repair_threads'});&lt;br /&gt;
	printf &amp;quot;*%-10s myisam_sort_buffer_size\n&amp;quot;, p($conf{'myisam_sort_buffer_size'});&lt;br /&gt;
	printf &amp;quot;%-5s Total MyISAM Repair Thread(s)\n\n&amp;quot;, p($repair);&lt;br /&gt;
};&lt;br /&gt;
 &lt;br /&gt;
# Memory (HEAP) tables&lt;br /&gt;
my $heaptables= $conf{'max_heap_table_size'};&lt;br /&gt;
 &lt;br /&gt;
# temp. tables&lt;br /&gt;
my $tmptables= min($conf{'tmp_table_size'});&lt;br /&gt;
 &lt;br /&gt;
#&lt;br /&gt;
# show result&lt;br /&gt;
#&lt;br /&gt;
print &amp;quot;$mysqld will use at most:\n&amp;quot;;&lt;br /&gt;
printf &amp;quot;%-10s for global stuff\n&amp;quot;, p($static);&lt;br /&gt;
printf &amp;quot;%-10s per thread\n&amp;quot;, p($thread);&lt;br /&gt;
printf &amp;quot;%-10s total (with %d active threads)\n&amp;quot;, p($static + $conf{'max_connections'}*$thread), $conf{'max_connections'};&lt;br /&gt;
print &amp;quot;and additionally:\n&amp;quot;;&lt;br /&gt;
printf &amp;quot;%-10s while recovering MyISAM tables\n&amp;quot;, p($repair) if ($repair);&lt;br /&gt;
printf &amp;quot;%-10s for each HEAP table\n&amp;quot;, p($heaptables);&lt;br /&gt;
printf &amp;quot;%-10s for each temporary table\n&amp;quot;, p($tmptables);&lt;br /&gt;
exit 0; &lt;br /&gt;
&lt;br /&gt;
sub min {&lt;br /&gt;
	my ($a, $b)= @_;&lt;br /&gt;
	return $a &amp;lt;$b ? $a : $b;&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub p {&lt;br /&gt;
	my $n= shift;&lt;br /&gt;
	my $prefix= 0;&lt;br /&gt;
	while ($n &amp;gt;= 1024 &amp;amp;&amp;amp; $prefix &amp;lt; 5) {&lt;br /&gt;
		$n/= 1024;&lt;br /&gt;
		$prefix++;&lt;br /&gt;
	}&lt;br /&gt;
	sprintf $prefix?&amp;quot;%.1f %s&amp;quot;:&amp;quot;%d %s&amp;quot;, $n, qw&amp;quot;Bytes KB MB GB TB&amp;quot;[$prefix];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
&lt;br /&gt;
Direct download and execution of script (auto mode)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;wget http://svn.jamesdooley.us/svn/JDooley/MySQLMemoryUsage/sqlmem-verbose.pl -O - | perl&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Default&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;perl sqlmem-verbose.pl&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Defaults will use the cpanel default MySQL locations.&lt;br /&gt;
&lt;br /&gt;
Specify paths&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;perl sqlmem-verbose.pl [/path/to/my.cnf] [/path/to/mysqld]&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Credits==&lt;br /&gt;
&lt;br /&gt;
Original code created by:&lt;br /&gt;
&lt;br /&gt;
Axel Schwenke:&lt;br /&gt;
&lt;br /&gt;
http://forge.mysql.com/tools/tool.php?id=266&lt;/div&gt;</summary>
		<author><name>Smsldoo</name></author>	</entry>

	<entry>
		<id>http://wiki.jamesdooley.us/index.php?title=MySQL_Memory_Usage&amp;diff=586</id>
		<title>MySQL Memory Usage</title>
		<link rel="alternate" type="text/html" href="http://wiki.jamesdooley.us/index.php?title=MySQL_Memory_Usage&amp;diff=586"/>
				<updated>2014-07-08T18:00:38Z</updated>
		
		<summary type="html">&lt;p&gt;Smsldoo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Misc]]&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
Perl script to calculate MySQL max memory allotment. &lt;br /&gt;
&lt;br /&gt;
Modified original code to search for cPanel defaults.&lt;br /&gt;
&lt;br /&gt;
==Script==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang='perl'&amp;gt;&lt;br /&gt;
#!/usr/bin/perl&lt;br /&gt;
#&lt;br /&gt;
# calculate mysqld memory consumption from my.cnf&lt;br /&gt;
# usage: mysql-memory-usage /path/to/my.cnf [/path/to/mysqld]&lt;br /&gt;
#&lt;br /&gt;
# $Id: mysql-memory-usage 228 2010-05-31 10:53:33Z schwenke $&lt;br /&gt;
&lt;br /&gt;
my $mycnf= shift;&lt;br /&gt;
$mycnf= &amp;quot;/etc/my.cnf&amp;quot; unless $mycnf;&lt;br /&gt;
die &amp;quot;cannot read $mycnf\n&amp;quot; unless (-r $mycnf);&lt;br /&gt;
&lt;br /&gt;
my $mysqld= shift;&lt;br /&gt;
unless ($mysqld) {&lt;br /&gt;
	# find mysqld relative to mysql&lt;br /&gt;
	$mysqld= `which mysqld` or $mysqld= `which mysql` or die;&lt;br /&gt;
	chomp $mysqld;&lt;br /&gt;
	$mysqld =~ s(bin/mysql$)(libexec/mysqld);&lt;br /&gt;
}&lt;br /&gt;
die &amp;quot;cannot execute $mysqld\n&amp;quot; unless (-x $mysqld);&lt;br /&gt;
&lt;br /&gt;
# read configuration&lt;br /&gt;
my %conf;&lt;br /&gt;
open M, &amp;quot;$mysqld --defaults-file=$mycnf --help --verbose |&amp;quot; or die;&lt;br /&gt;
while (&amp;lt;M&amp;gt;) { # skip to parameter list&lt;br /&gt;
	last if (/^\-{5,} \-{5,}$/o);&lt;br /&gt;
}&lt;br /&gt;
while (&amp;lt;M&amp;gt;) {&lt;br /&gt;
	last if /^$/o;&lt;br /&gt;
	my ($var, $val)= split;&lt;br /&gt;
	$conf{$var}= $val;&lt;br /&gt;
}&lt;br /&gt;
close M;&lt;br /&gt;
&lt;br /&gt;
# static memory consumption&lt;br /&gt;
my $static= $conf{'key_buffer_size'} + $conf{'query_cache_size'};&lt;br /&gt;
# has innodb&lt;br /&gt;
$static+= $conf{'innodb-buffer-pool-size'} + $conf{'innodb-log-buffer-size'}&lt;br /&gt;
+ $conf{'innodb-additional-mem-pool-size'} if (($conf{'innodb'} eq 'TRUE') or ($conf{'innodb'} eq 'ON'));&lt;br /&gt;
&lt;br /&gt;
# per thread memory consumption&lt;br /&gt;
my $thread= $conf{'thread_stack'}&lt;br /&gt;
+ 2*$conf{'net_buffer_length'} + $conf{'read_buffer_size'}&lt;br /&gt;
+ $conf{'read_rnd_buffer_size'} + $conf{'sort_buffer_size'};&lt;br /&gt;
&lt;br /&gt;
# writes binlog&lt;br /&gt;
$thread += $conf{'binlog_cache_size'} if ($conf{'log-bin'} ne '(No');&lt;br /&gt;
&lt;br /&gt;
# MyISAM repair thread(s)&lt;br /&gt;
my $repair= 0;&lt;br /&gt;
$repair+= $conf{'myisam_repair_threads'} * $conf{'myisam_sort_buffer_size'}&lt;br /&gt;
if ($conf{'myisam-recover'} ne 'OFF');&lt;br /&gt;
&lt;br /&gt;
# Memory (HEAP) tables&lt;br /&gt;
my $heaptables= $conf{'max_heap_table_size'};&lt;br /&gt;
&lt;br /&gt;
# temp. tables&lt;br /&gt;
my $tmptables= min($conf{'tmp_table_size'}, $conf{'max_heap_table_size'});&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# show result&lt;br /&gt;
#&lt;br /&gt;
print &amp;quot;$mysqld will use at most:\n&amp;quot;;&lt;br /&gt;
printf &amp;quot;%-10s for global stuff\n&amp;quot;, p($static);&lt;br /&gt;
printf &amp;quot;%-10s per thread\n&amp;quot;, p($thread);&lt;br /&gt;
printf &amp;quot;%-10s total (with %d active threads)\n&amp;quot;, p($static + $conf{'max_connections'}*$thread), $conf{'max_connections'};&lt;br /&gt;
print &amp;quot;and additionally:\n&amp;quot;;&lt;br /&gt;
printf &amp;quot;%-10s while recovering MyISAM tables\n&amp;quot;, p($repair) if ($repair);&lt;br /&gt;
printf &amp;quot;%-10s for each HEAP table\n&amp;quot;, p($heaptables);&lt;br /&gt;
printf &amp;quot;%-10s for each temporary table\n&amp;quot;, p($tmptables);&lt;br /&gt;
exit 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sub min {&lt;br /&gt;
	my ($a, $b)= @_;&lt;br /&gt;
	return $a &amp;lt;$b ? $a : $b;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub p {&lt;br /&gt;
	my $n= shift;&lt;br /&gt;
	my $prefix= 0;&lt;br /&gt;
	while ($n &amp;gt;= 1024 &amp;amp;&amp;amp; $prefix &amp;lt; 5) {&lt;br /&gt;
		$n/= 1024;&lt;br /&gt;
		$prefix++;&lt;br /&gt;
	}&lt;br /&gt;
	sprintf $prefix?&amp;quot;%.1f %s&amp;quot;:&amp;quot;%d %s&amp;quot;, $n, qw&amp;quot;Bytes KB MB GB TB&amp;quot;[$prefix];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
&lt;br /&gt;
Direct download and execution of script (auto mode)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;wget http://svn.jamesdooley.us/svn/JDooley/MySQLMemoryUsage/sqlmem.pl -O - | perl&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Default&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;perl sqlmem.pl&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Defaults will use the cpanel default MySQL locations.&lt;br /&gt;
&lt;br /&gt;
Specify paths&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;perl sqlmem.pl [/path/to/my.cnf] [/path/to/mysqld]&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Credits==&lt;br /&gt;
&lt;br /&gt;
Original code created by:&lt;br /&gt;
&lt;br /&gt;
Axel Schwenke:&lt;br /&gt;
&lt;br /&gt;
http://forge.mysql.com/tools/tool.php?id=266&lt;/div&gt;</summary>
		<author><name>Smsldoo</name></author>	</entry>

	<entry>
		<id>http://wiki.jamesdooley.us/index.php?title=CentOS_6_Minimum_Template_Changes&amp;diff=585</id>
		<title>CentOS 6 Minimum Template Changes</title>
		<link rel="alternate" type="text/html" href="http://wiki.jamesdooley.us/index.php?title=CentOS_6_Minimum_Template_Changes&amp;diff=585"/>
				<updated>2014-06-12T14:35:14Z</updated>
		
		<summary type="html">&lt;p&gt;Smsldoo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Knowledge]]&lt;br /&gt;
yum -y install vim wget unzip sendmail man rsync bc openssh-clients&lt;br /&gt;
&lt;br /&gt;
ifcfg-eth* MACs&lt;br /&gt;
&lt;br /&gt;
selinux&lt;br /&gt;
echo 0 &amp;gt;/selinux/enforce&lt;br /&gt;
vi /etc/selinux/config&lt;br /&gt;
&lt;br /&gt;
fixed&lt;br /&gt;
&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Smsldoo</name></author>	</entry>

	<entry>
		<id>http://wiki.jamesdooley.us/index.php?title=Find_and_Replace_in_SQL_database&amp;diff=584</id>
		<title>Find and Replace in SQL database</title>
		<link rel="alternate" type="text/html" href="http://wiki.jamesdooley.us/index.php?title=Find_and_Replace_in_SQL_database&amp;diff=584"/>
				<updated>2014-03-25T14:36:10Z</updated>
		
		<summary type="html">&lt;p&gt;Smsldoo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Knowledge]]&lt;br /&gt;
&lt;br /&gt;
If you need to find and replace a small portion of code (such as ~&amp;lt;username&amp;gt; to &amp;lt;url&amp;gt;) in a database you can use something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang='sql'&amp;gt;&lt;br /&gt;
update [table_name] set [field_name] = replace([field_name],'[string_to_find]','[string_to_replace]');&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just make sure [field_name] is set correctly on both sides. Otherwise you may overwrite data.&lt;/div&gt;</summary>
		<author><name>Smsldoo</name></author>	</entry>

	<entry>
		<id>http://wiki.jamesdooley.us/index.php?title=Change_default_check_mem_function_nagios&amp;diff=583</id>
		<title>Change default check mem function nagios</title>
		<link rel="alternate" type="text/html" href="http://wiki.jamesdooley.us/index.php?title=Change_default_check_mem_function_nagios&amp;diff=583"/>
				<updated>2014-03-25T14:35:47Z</updated>
		
		<summary type="html">&lt;p&gt;Smsldoo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Knowledge]]&lt;br /&gt;
Code to change out the check_mem script in nagios to use check_mem.pl instead.&lt;br /&gt;
Right now values are hard coded, will continue to look in to getting this to accept values from nrpe.&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;&lt;br /&gt;
wget https://raw.github.com/justintime/nagios-plugins/master/check_mem/check_mem.pl -O /usr/local/nagios/libexec/check_mem.pl&lt;br /&gt;
&lt;br /&gt;
chmod +x /usr/local/nagios/libexec/check_mem.pl&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;command[check_mem]=/usr/local/nagios/libexec/check_mem.pl -w 15 -c 5 -f -C&amp;quot; &amp;gt;&amp;gt; /usr/local/nagios/etc/nrpe.cfg&lt;br /&gt;
&lt;br /&gt;
service xinetd restart&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Smsldoo</name></author>	</entry>

	<entry>
		<id>http://wiki.jamesdooley.us/index.php?title=Side_Bar_Color_Fixer&amp;diff=582</id>
		<title>Side Bar Color Fixer</title>
		<link rel="alternate" type="text/html" href="http://wiki.jamesdooley.us/index.php?title=Side_Bar_Color_Fixer&amp;diff=582"/>
				<updated>2014-03-25T14:34:29Z</updated>
		
		<summary type="html">&lt;p&gt;Smsldoo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:GreaseMonkey]]&lt;br /&gt;
==Overview==&lt;br /&gt;
Changes the link colors to something more readable and removes link underlines.&lt;br /&gt;
&lt;br /&gt;
Also shrunk the text down to fit inside the frame for Nate's sidebar.&lt;br /&gt;
&lt;br /&gt;
Removed search boxes since nobody uses them anyway.&lt;br /&gt;
&lt;br /&gt;
==Script==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;&lt;br /&gt;
// ==UserScript==&lt;br /&gt;
// @name           HD Link Color&lt;br /&gt;
// @namespace      http://jamesdooley.us&lt;br /&gt;
// @description    Change HD Status Links to more visible colors&lt;br /&gt;
// @include        https://hd.int.liquidweb.com/stats/acd/support/vertsearch.mhtml&lt;br /&gt;
// ==/UserScript==&lt;br /&gt;
&lt;br /&gt;
GM_addStyle(&amp;quot;A { color: #FFF; text-decoration: none}&amp;quot;);&lt;br /&gt;
GM_addStyle(&amp;quot;.numbers { float: right;}&amp;quot;);&lt;br /&gt;
GM_addStyle(&amp;quot;.header { font-size: 10px; }&amp;quot;);&lt;br /&gt;
GM_addStyle(&amp;quot;.stats { font-size: 10px; }&amp;quot;);&lt;br /&gt;
GM_addStyle(&amp;quot;.statsred { font-size: 10px; }&amp;quot;);&lt;br /&gt;
GM_addStyle(&amp;quot;.statsgreen { font-size: 10px; }&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tablerows = document.getElementsByTagName('tr');&lt;br /&gt;
&lt;br /&gt;
for (i=9; i&amp;lt;=14; i++)&lt;br /&gt;
{&lt;br /&gt;
        tablerows[i].style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
document.getElementsByTagName('p')[0].style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==What to change==&lt;br /&gt;
To change the link color&lt;br /&gt;
&lt;br /&gt;
color: &amp;lt;hex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To enable link underlines remove &lt;br /&gt;
&lt;br /&gt;
text-decoration: none&lt;/div&gt;</summary>
		<author><name>Smsldoo</name></author>	</entry>

	<entry>
		<id>http://wiki.jamesdooley.us/index.php?title=Not_So_Important&amp;diff=581</id>
		<title>Not So Important</title>
		<link rel="alternate" type="text/html" href="http://wiki.jamesdooley.us/index.php?title=Not_So_Important&amp;diff=581"/>
				<updated>2014-03-25T14:34:13Z</updated>
		
		<summary type="html">&lt;p&gt;Smsldoo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:GreaseMonkey]]&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
Removes &amp;quot;Important&amp;quot; customer tickets from enterprise HD.&lt;br /&gt;
&lt;br /&gt;
Only looks through ticket area of screen and hides the tr tag for elements that contain the important icon.&lt;br /&gt;
&lt;br /&gt;
==Script==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang='javascript'&amp;gt;&lt;br /&gt;
// ==UserScript==&lt;br /&gt;
// @name           Not So Important&lt;br /&gt;
// @namespace      http://jamesdooley.us&lt;br /&gt;
// @description    Remove important tickets from HD view&lt;br /&gt;
// @include        https://hd.int.liquidweb.com/priority/&lt;br /&gt;
// @include        https://adminhd.liquidweb.com/priority/&lt;br /&gt;
// ==/UserScript==&lt;br /&gt;
&lt;br /&gt;
var hdform = document.getElementsByTagName('form');&lt;br /&gt;
var trlist = hdform[3].getElementsByTagName('tr');&lt;br /&gt;
&lt;br /&gt;
for (var i=0; i &amp;lt; trlist.length; i++) {&lt;br /&gt;
	var imgele = trlist[i].getElementsByTagName('img')&lt;br /&gt;
	if (imgele.length &amp;gt; 0) {&lt;br /&gt;
		notsoimportant(imgele)&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function notsoimportant (imgelement) {&lt;br /&gt;
	if (imgelement[0].alt == &amp;quot;auth-importantpriority&amp;quot;) { &lt;br /&gt;
		var style = trlist[i].style&lt;br /&gt;
		style.display = &amp;quot;none&amp;quot;&lt;br /&gt;
	}&lt;br /&gt;
	return true;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==What to change==&lt;/div&gt;</summary>
		<author><name>Smsldoo</name></author>	</entry>

	<entry>
		<id>http://wiki.jamesdooley.us/index.php?title=Less_Detail&amp;diff=580</id>
		<title>Less Detail</title>
		<link rel="alternate" type="text/html" href="http://wiki.jamesdooley.us/index.php?title=Less_Detail&amp;diff=580"/>
				<updated>2014-03-25T14:33:54Z</updated>
		
		<summary type="html">&lt;p&gt;Smsldoo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:GreaseMonkey]]&lt;br /&gt;
==Overview==&lt;br /&gt;
Removes global daily stats from the page.&lt;br /&gt;
&lt;br /&gt;
Shows only users in the userlist variable.&lt;br /&gt;
&lt;br /&gt;
==Script==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang='javascript'&amp;gt;&lt;br /&gt;
// ==UserScript==&lt;br /&gt;
// @name           less-detail&lt;br /&gt;
// @namespace      http://jamesdooley.us&lt;br /&gt;
// @description    Removes extra junk from response chart and only shows enterprise staff.&lt;br /&gt;
// @include        https://hd.int.liquidweb.com/stats/detail.mhtml&lt;br /&gt;
// ==/UserScript==&lt;br /&gt;
&lt;br /&gt;
var userlist = new Array(&amp;quot;jdooley&amp;quot;,&amp;quot;jscott&amp;quot;,&amp;quot;jschinkel&amp;quot;,&amp;quot;aauble&amp;quot;,&amp;quot;bking&amp;quot;,&amp;quot;jtaylor&amp;quot;,&amp;quot;mgearhart&amp;quot;,&amp;quot;nhubbard&amp;quot;,&amp;quot;awilliams&amp;quot;,&amp;quot;mjung&amp;quot;,&amp;quot;tholloway&amp;quot;,&amp;quot;jbeckmeyer&amp;quot;,&amp;quot;pcrandall&amp;quot;,&amp;quot;travisz&amp;quot;,&amp;quot;ssayers&amp;quot;,&amp;quot;mwineland&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
document.getElementsByTagName('h3')[0].style.display = &amp;quot;none&amp;quot;&lt;br /&gt;
document.getElementsByTagName('table')[0].style.display = &amp;quot;none&amp;quot;&lt;br /&gt;
&lt;br /&gt;
var trlist = document.getElementsByTagName('table')[1].getElementsByTagName('tr');&lt;br /&gt;
&lt;br /&gt;
for (var i=1; i &amp;lt; trlist.length; i++) {&lt;br /&gt;
	var uname = trlist[i].getElementsByTagName('td')[0].innerHTML&lt;br /&gt;
	trlist[i].style.display = &amp;quot;none&amp;quot;&lt;br /&gt;
	for (var u=0; u &amp;lt; userlist.length; u++) {&lt;br /&gt;
		if (uname==userlist[u]) {&lt;br /&gt;
			trlist[i].style.display = &amp;quot;&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==What to change==&lt;br /&gt;
userlist needs to be changed with the list of users you want to display.&lt;/div&gt;</summary>
		<author><name>Smsldoo</name></author>	</entry>

	<entry>
		<id>http://wiki.jamesdooley.us/index.php?title=HD_Button_Remove&amp;diff=579</id>
		<title>HD Button Remove</title>
		<link rel="alternate" type="text/html" href="http://wiki.jamesdooley.us/index.php?title=HD_Button_Remove&amp;diff=579"/>
				<updated>2014-03-25T14:33:34Z</updated>
		
		<summary type="html">&lt;p&gt;Smsldoo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:GreaseMonkey]]&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
Cleans up HD keyword button clutter.&lt;br /&gt;
&lt;br /&gt;
==Script==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang='javascript'&amp;gt;&lt;br /&gt;
// ==UserScript==&lt;br /&gt;
// @name           Button Remover&lt;br /&gt;
// @namespace      http://jamesdooley.us&lt;br /&gt;
// @description    Get rid of button clutter&lt;br /&gt;
// @include        https://adminhd.liquidweb.com*/msgs/*&lt;br /&gt;
// @include        https://hd.int.liquidweb.com*/msgs/*&lt;br /&gt;
// ==/UserScript==&lt;br /&gt;
&lt;br /&gt;
//List of buttons by value to remove&lt;br /&gt;
var btnlist = new Array(&amp;quot;besteffort&amp;quot;,&amp;quot;document_this&amp;quot;,&amp;quot;escalations&amp;quot;,&amp;quot;resolver-changed&amp;quot;,&amp;quot;storm&amp;quot;,&amp;quot;support_handoff&amp;quot;,&amp;quot;terminations&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
var hdbutton = document.getElementsByTagName('button');&lt;br /&gt;
for (var i=0; i &amp;lt; hdbutton.length; i++) {&lt;br /&gt;
	btnremove(hdbutton[i].getAttribute('value'))&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function btnremove (btnvalue){&lt;br /&gt;
	for (var b=0; b &amp;lt; btnlist.length; b++) {&lt;br /&gt;
		if (btnvalue==btnlist[b]) {&lt;br /&gt;
			var style = hdbutton[i].style;&lt;br /&gt;
			style.display = 'none';&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return false;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==What to change==&lt;br /&gt;
&lt;br /&gt;
btnlist contains a list of buttons you wish to remove. The value is the text that is displayed on the button.&lt;/div&gt;</summary>
		<author><name>Smsldoo</name></author>	</entry>

	<entry>
		<id>http://wiki.jamesdooley.us/index.php?title=SwapClean&amp;diff=578</id>
		<title>SwapClean</title>
		<link rel="alternate" type="text/html" href="http://wiki.jamesdooley.us/index.php?title=SwapClean&amp;diff=578"/>
				<updated>2014-03-25T14:33:07Z</updated>
		
		<summary type="html">&lt;p&gt;Smsldoo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Scripts]]&lt;br /&gt;
==Overview==&lt;br /&gt;
Script that is run via cron every ~10 minutes. Main purpose is to clear any swap usage if the system has the enough free ram and load is below a set value.&lt;br /&gt;
&lt;br /&gt;
==Script==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#Swap Cleaner&lt;br /&gt;
#Watches swap usage&lt;br /&gt;
#If there is swapping going on and there is enough free (+cache) ram, then turn swap off and back on.&lt;br /&gt;
#Created by James Dooley&lt;br /&gt;
#Feature / Bug requests jdooley@lw&lt;br /&gt;
 &lt;br /&gt;
#User Assigned Variables&lt;br /&gt;
 &lt;br /&gt;
swapthresh=0	#Swap threshold for clearing swap. Will not clear until this value is hit. Good for servers that normally allocates small amounts of swap for some reason.&lt;br /&gt;
freethresh=0	#Real free (free+cached) - current swap threshold. Ensures that atleast x bytes are free before clearing. &lt;br /&gt;
loadthresh=0	#Load threshold, will not clear if above this value (unless 0)&lt;br /&gt;
logrotate=1000	#Max number of lines in the log file&lt;br /&gt;
####&lt;br /&gt;
 &lt;br /&gt;
function plog {&lt;br /&gt;
	echo &amp;quot;[ `date` ][ $curswap; $curfree; $realload ] $1&amp;quot; &amp;gt;&amp;gt; /var/log/swapclean&lt;br /&gt;
	if [ &amp;quot;`wc -l /var/log/swapclean | awk '{print $1}'`&amp;quot; -gt &amp;quot;$logrotate&amp;quot; ]&lt;br /&gt;
	then&lt;br /&gt;
		sed -i -e &amp;quot;1d&amp;quot; /var/log/swapclean&lt;br /&gt;
	fi&lt;br /&gt;
	return&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function clearswap {&lt;br /&gt;
	plog &amp;quot;Clearing swap&amp;quot;&lt;br /&gt;
	touch /var/run/.swapoff&lt;br /&gt;
	echo $$ &amp;gt; /var/run/.swapoff&lt;br /&gt;
	/sbin/swapoff -a &amp;amp;&amp;amp; /sbin/swapon -a&lt;br /&gt;
	rm -f /var/run/.swapoff&lt;br /&gt;
	plog &amp;quot;Swap Cleared&amp;quot;&lt;br /&gt;
	return&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
function checkswap {&lt;br /&gt;
 &lt;br /&gt;
	curswap=`free | fgrep &amp;quot;Swap:&amp;quot; | awk '{print $3}'`&lt;br /&gt;
	curfree=`free | fgrep &amp;quot;buffers/cache:&amp;quot; | awk '{print $4}'`&lt;br /&gt;
	realload=`cat /proc/loadavg | awk '{print $1}'`&lt;br /&gt;
	curload=`echo &amp;quot;$realload * 100&amp;quot; | bc | sed 's/[.].*//'`&lt;br /&gt;
	loadthresh=`echo &amp;quot;$loadthresh *100&amp;quot; | bc | sed 's/[.].*//'`&lt;br /&gt;
	swapdif=`expr $curfree - $curswap`&lt;br /&gt;
 &lt;br /&gt;
	if [ &amp;quot;$swapthresh&amp;quot; -lt &amp;quot;$curswap&amp;quot; ]&lt;br /&gt;
	then&lt;br /&gt;
		#Server has swapped and is above its threshold&lt;br /&gt;
		if [ &amp;quot;$freethresh&amp;quot; -lt &amp;quot;$swapdif&amp;quot; ]&lt;br /&gt;
		then&lt;br /&gt;
			#Free - Swap is greater then freethresh&lt;br /&gt;
			if [ &amp;quot;$curload&amp;quot; -lt &amp;quot;$loadthresh&amp;quot; -o &amp;quot;$loadthresh&amp;quot; -eq 0 ]&lt;br /&gt;
			then&lt;br /&gt;
				#Load is below threshold&lt;br /&gt;
				if [ ! -e &amp;quot;/var/run/.swapoff&amp;quot; ] &lt;br /&gt;
				then&lt;br /&gt;
					clearswap&lt;br /&gt;
				else	&lt;br /&gt;
					plog &amp;quot;Lock file found, swap may be already clearing&amp;quot;&lt;br /&gt;
					opid=`cat /var/run/.swapoff`&lt;br /&gt;
					if [ ! &amp;quot;`ps ax | grep $opid | grep ${0##*/}`&amp;quot; ]&lt;br /&gt;
					then&lt;br /&gt;
						plog &amp;quot;PID not active or not owned by swapclean, clearing pid file&amp;quot;&lt;br /&gt;
						rm -f /var/run/.swapoff&lt;br /&gt;
						clearswap&lt;br /&gt;
					else&lt;br /&gt;
						plog &amp;quot;Swap already being cleared, PID active&amp;quot;&lt;br /&gt;
					fi&lt;br /&gt;
				fi&lt;br /&gt;
			else&lt;br /&gt;
				plog &amp;quot;High load, waiting to clear swap&amp;quot;&lt;br /&gt;
			fi&lt;br /&gt;
		else&lt;br /&gt;
			plog &amp;quot;Not enough free memory, waiting to clear swap&amp;quot;&lt;br /&gt;
		fi&lt;br /&gt;
	fi&lt;br /&gt;
	return&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function enablecron {&lt;br /&gt;
	if [ -e &amp;quot;/etc/cron.d/swapclean.sh&amp;quot; ]&lt;br /&gt;
	then&lt;br /&gt;
		echo &amp;quot;Cron already enabled, use change to set new time&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		echo &amp;quot;What time would you like to set the cron to&amp;quot;&lt;br /&gt;
		echo &amp;quot;[IE: */10 * * * * ]&amp;quot;&lt;br /&gt;
		read crontime;&lt;br /&gt;
		if [ ! $crontime ] &lt;br /&gt;
		then&lt;br /&gt;
			crontime=&amp;quot;*/10 * * * *&amp;quot;&lt;br /&gt;
		fi&lt;br /&gt;
		echo &amp;quot;SHELL=/bin/bash&amp;quot; &amp;gt; /etc/cron.d/swapclean.sh&lt;br /&gt;
		echo &amp;quot;$crontime root $(readlink -f $0)&amp;quot; &amp;gt;&amp;gt; /etc/cron.d/swapclean.sh&lt;br /&gt;
		chmod 0644 /etc/cron.d/swapclean.sh&lt;br /&gt;
		echo &amp;quot;Cron enabled [$crontime root $(readlink -f $0)]&amp;quot;&lt;br /&gt;
		return&lt;br /&gt;
	fi&lt;br /&gt;
	return&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
function disablecron {&lt;br /&gt;
	if [ -e &amp;quot;/etc/cron.d/swapclean.sh&amp;quot; ]&lt;br /&gt;
	then&lt;br /&gt;
		rm -f /etc/cron.d/swapclean.sh&lt;br /&gt;
		echo &amp;quot;Cron disabled&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		echo &amp;quot;Cron not enabled&amp;quot;&lt;br /&gt;
	fi&lt;br /&gt;
 	return&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
case $1 in&lt;br /&gt;
        --cron)&lt;br /&gt;
                case $2 in&lt;br /&gt;
			on)&lt;br /&gt;
				enablecron&lt;br /&gt;
				;;&lt;br /&gt;
			off)&lt;br /&gt;
				disablecron&lt;br /&gt;
				;;&lt;br /&gt;
			change)&lt;br /&gt;
				disablecron&lt;br /&gt;
				enablecron&lt;br /&gt;
				;;&lt;br /&gt;
		esac&lt;br /&gt;
                ;;&lt;br /&gt;
        --help)&lt;br /&gt;
                echo &amp;quot;Check swap usage:&amp;quot;&lt;br /&gt;
		echo &amp;quot; --cron [on, change, off]&amp;quot;&lt;br /&gt;
		echo &amp;quot;	on: Turns on cron job and asks for time&amp;quot;&lt;br /&gt;
		echo &amp;quot;	change: Changes the cron time&amp;quot;&lt;br /&gt;
		echo &amp;quot;	off: Turns off the cron job&amp;quot;&lt;br /&gt;
                ;;&lt;br /&gt;
        *)&lt;br /&gt;
                checkswap&lt;br /&gt;
                ;;&lt;br /&gt;
  esac&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==What to change==&lt;br /&gt;
===swapthresh===&lt;br /&gt;
This value allows swap to get to a certain level before looking to swap. &lt;br /&gt;
&lt;br /&gt;
===freethresh===&lt;br /&gt;
This is the level of extra free ram the script will require before attempting to clean swap&lt;br /&gt;
&lt;br /&gt;
===loadthresh===&lt;br /&gt;
This is the load level threshold at which the script will allow swap to be cleaned.&lt;br /&gt;
&lt;br /&gt;
You will probably want to set this value to a sane number, otherwise an already stressed system may lock up.&lt;br /&gt;
&lt;br /&gt;
===logrotate===&lt;br /&gt;
This is the number of lines that will be stored in the log file. When reached the top line will be deleted.&lt;/div&gt;</summary>
		<author><name>Smsldoo</name></author>	</entry>

	<entry>
		<id>http://wiki.jamesdooley.us/index.php?title=Mysql-dumpall&amp;diff=577</id>
		<title>Mysql-dumpall</title>
		<link rel="alternate" type="text/html" href="http://wiki.jamesdooley.us/index.php?title=Mysql-dumpall&amp;diff=577"/>
				<updated>2014-03-25T14:32:43Z</updated>
		
		<summary type="html">&lt;p&gt;Smsldoo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[category:Scripts]]&lt;br /&gt;
Script to dump all database tables as individual .sql files.&lt;br /&gt;
Can be set up as a cron for continuous dumps.&lt;br /&gt;
&lt;br /&gt;
==Script==&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
for d in $(mysql -e 'show databases;' | grep -v Database);&lt;br /&gt;
        do for t in $(mysql $d -e 'show tables;' | grep -v Tables);&lt;br /&gt;
                do mysqldump $d $t &amp;gt; /home/mysqldump/$d.$t.sql;&lt;br /&gt;
        done;&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
&lt;br /&gt;
Save on server and either run manually or set up cron job.&lt;br /&gt;
&lt;br /&gt;
will need to create /home/mysqldump directory (or change the directory name).&lt;/div&gt;</summary>
		<author><name>Smsldoo</name></author>	</entry>

	<entry>
		<id>http://wiki.jamesdooley.us/index.php?title=Errornotify&amp;diff=576</id>
		<title>Errornotify</title>
		<link rel="alternate" type="text/html" href="http://wiki.jamesdooley.us/index.php?title=Errornotify&amp;diff=576"/>
				<updated>2014-03-25T14:32:25Z</updated>
		
		<summary type="html">&lt;p&gt;Smsldoo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Scripts]]&lt;br /&gt;
==Overview==&lt;br /&gt;
A simple script I wrote to email me a summery of apache error messages in the last 24 hours.&lt;br /&gt;
&lt;br /&gt;
Cuts out uniq data such as IP addresses and unique_ids for modsec.&lt;br /&gt;
&lt;br /&gt;
==Script==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
acctlist=&amp;quot;jamesdoo;jamesdooley.us;james@jamesdooley.us devize;devize.us;james@jamesdooley.us&amp;quot;&lt;br /&gt;
&lt;br /&gt;
servername=&amp;quot;server1.infusedsites.com&amp;quot;&lt;br /&gt;
masteremail=&amp;quot;server@infusedsites.com&amp;quot;&lt;br /&gt;
&lt;br /&gt;
logperiod=`date +&amp;quot;%b %d&amp;quot;`&lt;br /&gt;
fulllogs=`grep &amp;quot;$logperiod&amp;quot; /usr/local/apache/logs/error_log`&lt;br /&gt;
modseclogs=`echo &amp;quot;$fulllogs&amp;quot; | grep &amp;quot;ModSec&amp;quot; | cut -d &amp;quot;]&amp;quot; -f2- | sort | cut -d &amp;quot;]&amp;quot; -f1,3- | rev | cut -d &amp;quot;[&amp;quot; -f2- | rev | sort | uniq -c | sort -nr`&lt;br /&gt;
remaininglogs=`echo &amp;quot;$fulllogs&amp;quot; | grep -v &amp;quot;ModSec&amp;quot; | cut -d &amp;quot;]&amp;quot; -f2- | sort | uniq -c | sort -nr`&lt;br /&gt;
&lt;br /&gt;
function masterlogs {&lt;br /&gt;
	echo -e &amp;quot;Daily Apache Error report for $servername \n\n\n&amp;quot; &amp;gt; email.txt&lt;br /&gt;
	echo -e &amp;quot;\n\n====Error Messages====\n&amp;quot; &amp;gt;&amp;gt; email.txt&lt;br /&gt;
	echo &amp;quot;$remaininglogs&amp;quot; | grep &amp;quot;\[error\]&amp;quot; &amp;gt;&amp;gt; email.txt&lt;br /&gt;
	echo -e &amp;quot;\n\n====Warnings====\n&amp;quot; &amp;gt;&amp;gt; email.txt&lt;br /&gt;
	echo &amp;quot;$remaininglogs&amp;quot; | grep &amp;quot;\[warn\]&amp;quot; &amp;gt;&amp;gt; email.txt&lt;br /&gt;
	echo -e &amp;quot;\n\n====Notice====\n&amp;quot;  &amp;gt;&amp;gt; email.txt&lt;br /&gt;
	echo &amp;quot;$remaininglogs&amp;quot; | grep &amp;quot;\[notice\]&amp;quot; &amp;gt;&amp;gt; email.txt&lt;br /&gt;
	echo -e &amp;quot;\n\n====ModSec====\n&amp;quot; &amp;gt;&amp;gt; email.txt&lt;br /&gt;
	echo &amp;quot;$modseclogs&amp;quot; &amp;gt;&amp;gt; email.txt&lt;br /&gt;
 &lt;br /&gt;
	cat email.txt | mail -s &amp;quot;Daily Apache Error Log Report&amp;quot; $masteremail&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function processacctlogs {&lt;br /&gt;
	user=`echo $1 | cut -d &amp;quot;;&amp;quot; -f1`&lt;br /&gt;
	domain=`echo $1 | cut -d &amp;quot;;&amp;quot; -f2`&lt;br /&gt;
	email=`echo $1 | cut -d &amp;quot;;&amp;quot; -f3`&lt;br /&gt;
	&lt;br /&gt;
	domainlogs=`echo &amp;quot;$remaininglogs&amp;quot; | grep &amp;quot;$domain\|$user&amp;quot;`&lt;br /&gt;
	domainmodsec=`echo &amp;quot;$modseclogs&amp;quot; | grep &amp;quot;$domain\|$user&amp;quot;`&lt;br /&gt;
	&lt;br /&gt;
	echo -e &amp;quot;Daily Apache error report for $domain \n\n\n&amp;quot; &amp;gt; email.txt&lt;br /&gt;
	echo -e &amp;quot;\n\n====Error Messages====\n&amp;quot; &amp;gt;&amp;gt; email.txt&lt;br /&gt;
	echo &amp;quot;$domainlogs&amp;quot; | grep &amp;quot;\[error\]&amp;quot; &amp;gt;&amp;gt; email.txt&lt;br /&gt;
	echo -e &amp;quot;\n\n====Warnings====\n&amp;quot; &amp;gt;&amp;gt; email.txt&lt;br /&gt;
	echo &amp;quot;$domainlogs&amp;quot; | grep &amp;quot;\[warn\]&amp;quot; &amp;gt;&amp;gt; email.txt&lt;br /&gt;
	echo -e &amp;quot;\n\n====Notice====\n&amp;quot;  &amp;gt;&amp;gt; email.txt&lt;br /&gt;
	echo &amp;quot;$domainlogs&amp;quot; | grep &amp;quot;\[notice\]&amp;quot; &amp;gt;&amp;gt; email.txt&lt;br /&gt;
	echo -e &amp;quot;\n\n====ModSec====\n&amp;quot; &amp;gt;&amp;gt; email.txt&lt;br /&gt;
	echo &amp;quot;$domainmodsec&amp;quot; &amp;gt;&amp;gt; email.txt&lt;br /&gt;
	&lt;br /&gt;
	cat email.txt | mail -s &amp;quot;Daily Apache error log report for $domain&amp;quot; $email&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
masterlogs;&lt;br /&gt;
for account in $(echo $acctlist);&lt;br /&gt;
do&lt;br /&gt;
	processacctlogs $account&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
rm -f email.txt&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==What to change==&lt;/div&gt;</summary>
		<author><name>Smsldoo</name></author>	</entry>

	<entry>
		<id>http://wiki.jamesdooley.us/index.php?title=Disk_Speed_Test&amp;diff=575</id>
		<title>Disk Speed Test</title>
		<link rel="alternate" type="text/html" href="http://wiki.jamesdooley.us/index.php?title=Disk_Speed_Test&amp;diff=575"/>
				<updated>2014-03-25T14:32:07Z</updated>
		
		<summary type="html">&lt;p&gt;Smsldoo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Scripts]]&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
Runs hdparm -t, seeker and Nates dd script.&lt;br /&gt;
&lt;br /&gt;
By default each test is run 3 times to get a good running average. &lt;br /&gt;
&lt;br /&gt;
Outputs are cleaned up to provide usable information&lt;br /&gt;
&lt;br /&gt;
For Nates dd test you will need to have the drive mounted and listed in fstab&lt;br /&gt;
&lt;br /&gt;
==Script==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
testpath=`grep $1 /etc/fstab | awk '{print $2}'`&lt;br /&gt;
testcount=3&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Testing hdparm -t $1&amp;quot;&lt;br /&gt;
for i in `seq 1 $testcount`;&lt;br /&gt;
do&lt;br /&gt;
	hdparm -t $1 | grep &amp;quot;Timing&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
if [ `which seeker 2&amp;gt;/dev/null` ]&lt;br /&gt;
then&lt;br /&gt;
	echo &amp;quot;Testing seeker $1&amp;quot;&lt;br /&gt;
	for i in `seq 1 $testcount`;&lt;br /&gt;
	do&lt;br /&gt;
		seeker $1 | grep &amp;quot;Results&amp;quot;&lt;br /&gt;
	done&lt;br /&gt;
else&lt;br /&gt;
	echo &amp;quot;Seeker is not installed, please install from rpmforge: 'yum install seeker'&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if [ `which pv 2&amp;gt;/dev/null` ]&lt;br /&gt;
then&lt;br /&gt;
	echo &amp;quot;Testing DD pv&amp;quot;&lt;br /&gt;
	echo &amp;quot;Write Test&amp;quot;&lt;br /&gt;
	for i in `seq 1 $testcount`;&lt;br /&gt;
	do&lt;br /&gt;
		sync&lt;br /&gt;
		dd if=/dev/zero bs=1M count=2048 2&amp;gt;/dev/null | dd of=$testpath/ddfile 2&amp;gt;&amp;amp;1 | grep copied&lt;br /&gt;
	done&lt;br /&gt;
	echo &amp;quot;Read Test&amp;quot;&lt;br /&gt;
	for i in `seq 1 $testcount`;&lt;br /&gt;
	do&lt;br /&gt;
		sync&lt;br /&gt;
		cat $testpath/ddfile | pv -trb -s 2G &amp;gt; /dev/null&lt;br /&gt;
	done&lt;br /&gt;
	rm -f $testpath/ddfile&lt;br /&gt;
else&lt;br /&gt;
	echo &amp;quot;PV is not installed, please install 'yum install pv'&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;&lt;br /&gt;
sh hdtest &amp;lt;drive path&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==What to change==&lt;br /&gt;
&lt;br /&gt;
testcount This should be set to the number of times you want this test to run.&lt;/div&gt;</summary>
		<author><name>Smsldoo</name></author>	</entry>

	<entry>
		<id>http://wiki.jamesdooley.us/index.php?title=Bot_Block&amp;diff=574</id>
		<title>Bot Block</title>
		<link rel="alternate" type="text/html" href="http://wiki.jamesdooley.us/index.php?title=Bot_Block&amp;diff=574"/>
				<updated>2014-03-25T14:31:45Z</updated>
		
		<summary type="html">&lt;p&gt;Smsldoo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Scripts]]&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Script==&lt;br /&gt;
===Get Top User Agents===&lt;br /&gt;
Get a list of top user agents (bot nets will only have a few and there will be tons of hits)&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;&lt;br /&gt;
tail -1000 &amp;lt;DOMLOGFILE&amp;gt; | cut -d '&amp;quot;' -f6 | sort | uniq -c | sort -n&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
or&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;&lt;br /&gt;
cat &amp;lt;DOMLOGFILE&amp;gt; | cut -d '&amp;quot;' -f6 | sort | uniq -c | sort -n&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
===Block By User Agent===&lt;br /&gt;
Block those user agents&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
loglines=1000&lt;br /&gt;
logperiod=`tail -$loglines &amp;lt;DOMLOG WITH FULL PATH&amp;gt;`&lt;br /&gt;
logrotate=10000&lt;br /&gt;
logdelete=100&lt;br /&gt;
useragents[0]='Opera/9.02 (Windows NT 5.1; U; ru)'&lt;br /&gt;
useragents[1]='Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)'&lt;br /&gt;
useragents[2]='Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1'&lt;br /&gt;
&lt;br /&gt;
function plog {&lt;br /&gt;
        echo &amp;quot;[ `date` ] $1&amp;quot; &amp;gt;&amp;gt; /var/log/botblock&lt;br /&gt;
        if [ &amp;quot;`wc -l /var/log/botblock | awk '{print $1}'`&amp;quot; -gt &amp;quot;$logrotate&amp;quot; ]&lt;br /&gt;
        then&lt;br /&gt;
                sed -i -e &amp;quot;`echo $logdelete`d&amp;quot; /var/log/botblock&lt;br /&gt;
        fi&lt;br /&gt;
        return&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function botblock {&lt;br /&gt;
        touch /var/run/.botblock&lt;br /&gt;
        echo $$ &amp;gt; /var/run/.botblock&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        agentlen=${#useragents[@]}&lt;br /&gt;
&lt;br /&gt;
        for (( u=0; u&amp;lt;${agentlen}; u++));&lt;br /&gt;
        do&lt;br /&gt;
                for i in $(echo &amp;quot;$logperiod&amp;quot; | grep &amp;quot;GET /&amp;quot; | grep &amp;quot;${useragents[$u]}&amp;quot; | cut -d &amp;quot; &amp;quot; -f1 | sort | uniq | sort)&lt;br /&gt;
                do&lt;br /&gt;
                        plog &amp;quot;Attempting to block $i ${useragents[$u]}&amp;quot;&lt;br /&gt;
                        plog &amp;quot;`/usr/local/sbin/apf -d $i &amp;quot;RU Botnet IP (${useragents[$u]})&amp;quot; 2&amp;gt;&amp;amp;1`&amp;quot;   ########APF FIREWALL&lt;br /&gt;
                        #plog &amp;quot;`/usr/sbin/csf -d $i &amp;quot;RU Botnet IP (${useragents[$u]})&amp;quot; 2&amp;gt;&amp;amp;1`&amp;quot;        ########CSF FIREWALL&lt;br /&gt;
                done&lt;br /&gt;
        done&lt;br /&gt;
        rm -f /var/run/.botblock&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function checkbots {&lt;br /&gt;
        if [ ! -e &amp;quot;/var/run/.botblock&amp;quot; ]&lt;br /&gt;
        then&lt;br /&gt;
                botblock&lt;br /&gt;
        else&lt;br /&gt;
                plog &amp;quot;Lock file found, script may be already running&amp;quot;&lt;br /&gt;
                opid=`cat /var/run/.botblock`&lt;br /&gt;
                if [ ! &amp;quot;`ps ax | grep $opid | grep ${0##*/}`&amp;quot; ]&lt;br /&gt;
                then&lt;br /&gt;
                        plog &amp;quot;PID not active or not owned by script, clearing pid file&amp;quot;&lt;br /&gt;
                        rm -f /var/run/.botblock&lt;br /&gt;
                        botblock&lt;br /&gt;
                else&lt;br /&gt;
                        plog &amp;quot;Script already running, PID active&amp;quot;&lt;br /&gt;
                fi&lt;br /&gt;
        fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function enablecron {&lt;br /&gt;
	if [ -e &amp;quot;/etc/cron.d/botblock.sh&amp;quot; ]&lt;br /&gt;
	then&lt;br /&gt;
		echo &amp;quot;Cron already enabled, use change to set new time&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		echo &amp;quot;What time would you like to set the cron to&amp;quot;&lt;br /&gt;
		echo &amp;quot;[IE: * * * * * ]&amp;quot;&lt;br /&gt;
		read crontime;&lt;br /&gt;
		if [ ! $crontime ] &lt;br /&gt;
		then&lt;br /&gt;
			crontime=&amp;quot;* * * * *&amp;quot;&lt;br /&gt;
		fi&lt;br /&gt;
		echo &amp;quot;SHELL=/bin/bash&amp;quot; &amp;gt; /etc/cron.d/botblock.sh&lt;br /&gt;
		echo &amp;quot;$crontime root $(readlink -f $0)&amp;quot; &amp;gt;&amp;gt; /etc/cron.d/botblock.sh&lt;br /&gt;
		chmod 0644 /etc/cron.d/botblock.sh&lt;br /&gt;
		echo &amp;quot;Cron enabled [$crontime root $(readlink -f $0)]&amp;quot;&lt;br /&gt;
		return&lt;br /&gt;
	fi&lt;br /&gt;
	return&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
function disablecron {&lt;br /&gt;
	if [ -e &amp;quot;/etc/cron.d/botblock.sh&amp;quot; ]&lt;br /&gt;
	then&lt;br /&gt;
		rm -f /etc/cron.d/botblock.sh&lt;br /&gt;
		echo &amp;quot;Cron disabled&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		echo &amp;quot;Cron not enabled&amp;quot;&lt;br /&gt;
	fi&lt;br /&gt;
 	return&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
function scanlog {&lt;br /&gt;
        if [ -e &amp;quot;$2&amp;quot; ]&lt;br /&gt;
        then&lt;br /&gt;
                tail -$loglines $2 | cut -d '&amp;quot;' -f6 | sort | uniq -c | sort -n &lt;br /&gt;
        elif [ -e &amp;quot;/usr/local/apache/domlogs/$2&amp;quot; ]&lt;br /&gt;
        then&lt;br /&gt;
                tail -$loglines /usr/local/apache/domlogs/$2 | cut -d '&amp;quot;' -f6 | sort | uniq -c | sort -n &lt;br /&gt;
        else&lt;br /&gt;
                echo &amp;quot;$2 - Log file not found&amp;quot;&lt;br /&gt;
        fi&lt;br /&gt;
return&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function blockcount {&lt;br /&gt;
        grep Botnet /etc/apf/deny_hosts.rules | cut -d &amp;quot;(&amp;quot; -f2-3 | sort | uniq -c | sort -n&lt;br /&gt;
return&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function findcommon {&lt;br /&gt;
	if [ -e &amp;quot;$2&amp;quot; ]&lt;br /&gt;
	then&lt;br /&gt;
		for i in $(tail -$loglines $2 | cut -d '&amp;quot;' -f6 | sort | uniq -c | sort -n); do echo &amp;quot;$i&amp;quot;; done | sort | uniq -c | sort -n | tail -40&lt;br /&gt;
	elif [ -e &amp;quot;/usr/local/apache/domlogs/$2&amp;quot; ]&lt;br /&gt;
	then&lt;br /&gt;
		for i in $(tail -$loglines /usr/local/apache/domlogs/$2 | cut -d '&amp;quot;' -f6 | sort | uniq -c | sort -n); do echo &amp;quot;$i&amp;quot;; done | sort | uniq -c | sort -n | tail -40&lt;br /&gt;
	else&lt;br /&gt;
		echo &amp;quot;$2 - Log file not found&amp;quot;&lt;br /&gt;
	fi&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
case $1 in&lt;br /&gt;
        --cron)&lt;br /&gt;
                case $2 in&lt;br /&gt;
			on)&lt;br /&gt;
				enablecron&lt;br /&gt;
				;;&lt;br /&gt;
			off)&lt;br /&gt;
				disablecron&lt;br /&gt;
				;;&lt;br /&gt;
			change)&lt;br /&gt;
				disablecron&lt;br /&gt;
				enablecron&lt;br /&gt;
				;;&lt;br /&gt;
		esac&lt;br /&gt;
                ;;&lt;br /&gt;
        --scanlog)&lt;br /&gt;
                scanlog&lt;br /&gt;
                ;;&lt;br /&gt;
        --blockcount)&lt;br /&gt;
                blockcount&lt;br /&gt;
                ;;&lt;br /&gt;
        --findcommon)&lt;br /&gt;
                findcommon&lt;br /&gt;
                ;;&lt;br /&gt;
        --help)&lt;br /&gt;
                echo &amp;quot;Check for bots based on user agent and block in firewall:&amp;quot;&lt;br /&gt;
		echo &amp;quot; --cron [on, change, off]&amp;quot;&lt;br /&gt;
		echo &amp;quot;	on: Turns on cron job and asks for time&amp;quot;&lt;br /&gt;
		echo &amp;quot;	change: Changes the cron time&amp;quot;&lt;br /&gt;
		echo &amp;quot;	off: Turns off the cron job&amp;quot;&lt;br /&gt;
                echo &amp;quot;&amp;quot;&lt;br /&gt;
                echo &amp;quot; --scanlog [domlog to scan]&amp;quot;&lt;br /&gt;
                echo &amp;quot;  Scan a log file and return user agents&amp;quot;&lt;br /&gt;
                echo &amp;quot; --blockcount&amp;quot;&lt;br /&gt;
                echo &amp;quot;  Return number of current blocks per user agent&amp;quot;&lt;br /&gt;
                echo &amp;quot; --findcommon [domlog to scan]&amp;quot;&lt;br /&gt;
                echo &amp;quot;  Find common keywords for blocking based on user agents&amp;quot;&lt;br /&gt;
                ;;&lt;br /&gt;
        *)&lt;br /&gt;
                checkbots&lt;br /&gt;
                ;;&lt;br /&gt;
  esac&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Block By Agent Length===&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
loglines=1000&lt;br /&gt;
logperiod=`tail -$loglines /usr/local/apache/domlogs/abzocke.derblog.net`&lt;br /&gt;
logrotate=10000&lt;br /&gt;
logdelete=100&lt;br /&gt;
#useragents[0]='Opera/9.02 (Windows NT 5.1; U; ru)'&lt;br /&gt;
#useragents[1]='Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)'&lt;br /&gt;
#useragents[2]='Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1'&lt;br /&gt;
&lt;br /&gt;
function plog {&lt;br /&gt;
        echo &amp;quot;[ `date` ] $1&amp;quot; &amp;gt;&amp;gt; /var/log/botblock&lt;br /&gt;
        if [ &amp;quot;`wc -l /var/log/botblock | awk '{print $1}'`&amp;quot; -gt &amp;quot;$logrotate&amp;quot; ]&lt;br /&gt;
        then&lt;br /&gt;
                sed -i -e &amp;quot;`echo $logdelete`d&amp;quot; /var/log/botblock&lt;br /&gt;
        fi&lt;br /&gt;
        return&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function botblock {&lt;br /&gt;
        touch /var/run/.botblock&lt;br /&gt;
        echo $$ &amp;gt; /var/run/.botblock&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        agentlen=${#useragents[@]}&lt;br /&gt;
&lt;br /&gt;
#        for (( u=0; u&amp;lt;${agentlen}; u++));&lt;br /&gt;
#        do&lt;br /&gt;
#                for i in $(echo &amp;quot;$logperiod&amp;quot; | grep &amp;quot;GET /&amp;quot; | grep &amp;quot;${useragents[$u]}&amp;quot; | cut -d &amp;quot; &amp;quot; -f1 | sort | uniq | sort)&lt;br /&gt;
#                do&lt;br /&gt;
#                        plog &amp;quot;Attempting to block $i ${useragents[$u]}&amp;quot;&lt;br /&gt;
#                        plog &amp;quot;`/usr/local/sbin/apf -d $i &amp;quot;RU Botnet IP (${useragents[$u]})&amp;quot; 2&amp;gt;&amp;amp;1`&amp;quot;&lt;br /&gt;
#                done&lt;br /&gt;
#        done&lt;br /&gt;
	for i in $(echo &amp;quot;$logperiod&amp;quot; | grep &amp;quot;GET / HTTP/1.1&amp;quot; | grep -E '&amp;quot;[a-zA-Z0-9]{10}&amp;quot;$' | awk '{ print $1 }')&lt;br /&gt;
	do&lt;br /&gt;
		plog &amp;quot;Attempting to block $i&amp;quot;&lt;br /&gt;
		#plog &amp;quot;`/usr/local/sbin/apf -d $i Botnet 2&amp;gt;&amp;amp;1`&amp;quot;&lt;br /&gt;
		plog &amp;quot;`/usr/sbin/csf -d $i Botnet 2&amp;gt;&amp;amp;1`&amp;quot;&lt;br /&gt;
	done&lt;br /&gt;
&lt;br /&gt;
        rm -f /var/run/.botblock&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function checkbots {&lt;br /&gt;
        if [ ! -e &amp;quot;/var/run/.botblock&amp;quot; ]&lt;br /&gt;
        then&lt;br /&gt;
                botblock&lt;br /&gt;
        else&lt;br /&gt;
                plog &amp;quot;Lock file found, script may be already running&amp;quot;&lt;br /&gt;
                opid=`cat /var/run/.botblock`&lt;br /&gt;
                if [ ! &amp;quot;`ps ax | grep $opid | grep ${0##*/}`&amp;quot; ]&lt;br /&gt;
                then&lt;br /&gt;
                        plog &amp;quot;PID not active or not owned by script, clearing pid file&amp;quot;&lt;br /&gt;
                        rm -f /var/run/.botblock&lt;br /&gt;
                        botblock&lt;br /&gt;
                else&lt;br /&gt;
                        plog &amp;quot;Script already running, PID active&amp;quot;&lt;br /&gt;
                fi&lt;br /&gt;
        fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function enablecron {&lt;br /&gt;
	if [ -e &amp;quot;/etc/cron.d/botblock.sh&amp;quot; ]&lt;br /&gt;
	then&lt;br /&gt;
		echo &amp;quot;Cron already enabled, use change to set new time&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		echo &amp;quot;What time would you like to set the cron to&amp;quot;&lt;br /&gt;
		echo &amp;quot;[IE: * * * * * ]&amp;quot;&lt;br /&gt;
		read crontime;&lt;br /&gt;
		if [ ! $crontime ] &lt;br /&gt;
		then&lt;br /&gt;
			crontime=&amp;quot;* * * * *&amp;quot;&lt;br /&gt;
		fi&lt;br /&gt;
		echo &amp;quot;SHELL=/bin/bash&amp;quot; &amp;gt; /etc/cron.d/botblock.sh&lt;br /&gt;
		echo &amp;quot;$crontime root $(readlink -f $0)&amp;quot; &amp;gt;&amp;gt; /etc/cron.d/botblock.sh&lt;br /&gt;
		chmod 0644 /etc/cron.d/botblock.sh&lt;br /&gt;
		echo &amp;quot;Cron enabled [$crontime root $(readlink -f $0)]&amp;quot;&lt;br /&gt;
		return&lt;br /&gt;
	fi&lt;br /&gt;
	return&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
function disablecron {&lt;br /&gt;
	if [ -e &amp;quot;/etc/cron.d/botblock.sh&amp;quot; ]&lt;br /&gt;
	then&lt;br /&gt;
		rm -f /etc/cron.d/botblock.sh&lt;br /&gt;
		echo &amp;quot;Cron disabled&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		echo &amp;quot;Cron not enabled&amp;quot;&lt;br /&gt;
	fi&lt;br /&gt;
 	return&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
function scanlog {&lt;br /&gt;
        if [ -e &amp;quot;$2&amp;quot; ]&lt;br /&gt;
        then&lt;br /&gt;
                tail -$loglines $2 | cut -d '&amp;quot;' -f6 | sort | uniq -c | sort -n &lt;br /&gt;
        elif [ -e &amp;quot;/usr/local/apache/domlogs/$2&amp;quot; ]&lt;br /&gt;
	then&lt;br /&gt;
                tail -$loglines /usr/local/apache/domlogs/$2 | cut -d '&amp;quot;' -f6 | sort | uniq -c | sort -n &lt;br /&gt;
        else&lt;br /&gt;
                echo &amp;quot;$2 - Log file not found&amp;quot;&lt;br /&gt;
        fi&lt;br /&gt;
return&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function blockcount {&lt;br /&gt;
        grep Botnet /etc/apf/deny_hosts.rules | cut -d &amp;quot;(&amp;quot; -f2-3 | sort | uniq -c | sort -n&lt;br /&gt;
return&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
case $1 in&lt;br /&gt;
        --cron)&lt;br /&gt;
                case $2 in&lt;br /&gt;
			on)&lt;br /&gt;
				enablecron&lt;br /&gt;
				;;&lt;br /&gt;
			off)&lt;br /&gt;
				disablecron&lt;br /&gt;
				;;&lt;br /&gt;
			change)&lt;br /&gt;
				disablecron&lt;br /&gt;
				enablecron&lt;br /&gt;
				;;&lt;br /&gt;
		esac&lt;br /&gt;
                ;;&lt;br /&gt;
        --scanlog)&lt;br /&gt;
                scanlog&lt;br /&gt;
                ;;&lt;br /&gt;
        --blockcount)&lt;br /&gt;
                blockcount&lt;br /&gt;
		;;&lt;br /&gt;
        --help)&lt;br /&gt;
                echo &amp;quot;Check for bots based on user agent and block in firewall:&amp;quot;&lt;br /&gt;
		echo &amp;quot; --cron [on, change, off]&amp;quot;&lt;br /&gt;
		echo &amp;quot;	on: Turns on cron job and asks for time&amp;quot;&lt;br /&gt;
		echo &amp;quot;	change: Changes the cron time&amp;quot;&lt;br /&gt;
		echo &amp;quot;	off: Turns off the cron job&amp;quot;&lt;br /&gt;
                echo &amp;quot;&amp;quot;&lt;br /&gt;
                echo &amp;quot; --scanlog [domlog to scan]&amp;quot;&lt;br /&gt;
                echo &amp;quot;  Scan a log file and return user agents&amp;quot;&lt;br /&gt;
                echo &amp;quot; --blockcount&amp;quot;&lt;br /&gt;
                echo &amp;quot;  Return number of current blocks per user agent&amp;quot;&lt;br /&gt;
                ;;&lt;br /&gt;
        *)&lt;br /&gt;
                checkbots&lt;br /&gt;
                ;;&lt;br /&gt;
  esac&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==What to change==&lt;/div&gt;</summary>
		<author><name>Smsldoo</name></author>	</entry>

	<entry>
		<id>http://wiki.jamesdooley.us/index.php?title=Apache_Restart&amp;diff=573</id>
		<title>Apache Restart</title>
		<link rel="alternate" type="text/html" href="http://wiki.jamesdooley.us/index.php?title=Apache_Restart&amp;diff=573"/>
				<updated>2014-03-25T14:30:59Z</updated>
		
		<summary type="html">&lt;p&gt;Smsldoo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Scripts]]&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
Restarts apache if load gets above a certain threshold. Has logging and locking functionality.&lt;br /&gt;
&lt;br /&gt;
==Script==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#Load Threshold for doing a dump.&lt;br /&gt;
THRESH=20&lt;br /&gt;
&lt;br /&gt;
#Number of lines to keep in log&lt;br /&gt;
LOGROTATE=1000&lt;br /&gt;
&lt;br /&gt;
#Email Alerts&lt;br /&gt;
EMAILTO=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
function plog {&lt;br /&gt;
&lt;br /&gt;
	echo &amp;quot;[ `date` ][ $LOAD ] $1&amp;quot; &amp;gt;&amp;gt; /var/log/apacherestart&lt;br /&gt;
	if [ EMAILTO ]&lt;br /&gt;
	then&lt;br /&gt;
		echo &amp;quot;[ `date` ][ $LOAD ] $1&amp;quot;&lt;br /&gt;
	fi&lt;br /&gt;
&lt;br /&gt;
	if [ &amp;quot;`wc -l /var/log/apacherestart | awk '{print $1}'`&amp;quot; -gt &amp;quot;$LOGROTATE&amp;quot; ]&lt;br /&gt;
	then&lt;br /&gt;
		sed -i -e &amp;quot;1d&amp;quot; /var/log/apacherestart&lt;br /&gt;
	fi&lt;br /&gt;
	return&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function restartapache {&lt;br /&gt;
	plog &amp;quot;Restarting Apache&amp;quot;&lt;br /&gt;
	echo $$ &amp;gt; /var/run/.apacherestart&lt;br /&gt;
	service httpd restart&lt;br /&gt;
	rm -f /var/run/.apacherestart&lt;br /&gt;
	plog &amp;quot;Apache Restart Completed&amp;quot;&lt;br /&gt;
	return&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function enablecron {&lt;br /&gt;
	if [ -e &amp;quot;/etc/cron.d/apacherestart.sh&amp;quot; ]&lt;br /&gt;
	then&lt;br /&gt;
		echo &amp;quot;Cron already enabled, use change to set new time&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		echo &amp;quot;What time would you like to set the cron to&amp;quot;&lt;br /&gt;
		echo &amp;quot;[IE: */1 * * * * ]&amp;quot;&lt;br /&gt;
		read crontime;&lt;br /&gt;
		if [ ! $crontime ] &lt;br /&gt;
		then&lt;br /&gt;
			crontime=&amp;quot;*/1 * * * *&amp;quot;&lt;br /&gt;
		fi&lt;br /&gt;
		echo &amp;quot;SHELL=/bin/bash&amp;quot; &amp;gt; /etc/cron.d/apacherestart.sh&lt;br /&gt;
		if [ $EMAILTO ]&lt;br /&gt;
		then&lt;br /&gt;
			echo 'MAILTO=&amp;quot;$MAILTO&amp;quot;' &amp;gt; /etc/cron.d/apacherestart.sh&lt;br /&gt;
		fi&lt;br /&gt;
		echo &amp;quot;$crontime root $(readlink -f $0)&amp;quot; &amp;gt;&amp;gt; /etc/cron.d/apacherestart.sh&lt;br /&gt;
		chmod 0644 /etc/cron.d/apacherestart.sh&lt;br /&gt;
		echo &amp;quot;Cron enabled [$crontime root $(readlink -f $0)]&amp;quot;&lt;br /&gt;
		return&lt;br /&gt;
	fi&lt;br /&gt;
	return&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
function disablecron {&lt;br /&gt;
	if [ -e &amp;quot;/etc/cron.d/apacherestart.sh&amp;quot; ]&lt;br /&gt;
	then&lt;br /&gt;
		rm -f /etc/cron.d/apacherestart.sh&lt;br /&gt;
		echo &amp;quot;Cron disabled&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		echo &amp;quot;Cron not enabled&amp;quot;&lt;br /&gt;
	fi&lt;br /&gt;
 	return&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function checkload {&lt;br /&gt;
	LOAD=`cat /proc/loadavg | awk '{print $1}' | awk -F '.' '{print $1}'`&lt;br /&gt;
&lt;br /&gt;
	if [ $LOAD -gt $THRESH ]&lt;br /&gt;
	then&lt;br /&gt;
		if [ ! -e &amp;quot;/var/run/.apacherestart&amp;quot; ]&lt;br /&gt;
		then&lt;br /&gt;
			restartapache&lt;br /&gt;
		else&lt;br /&gt;
			opid=`cat /var/run/.apacherestart`&lt;br /&gt;
			if [ ! &amp;quot;`ps ax | grep $opid | grep ${0##*/}`&amp;quot; ]&lt;br /&gt;
			then&lt;br /&gt;
				plog &amp;quot;Stale Lock File Removed&amp;quot;&lt;br /&gt;
				rm -f /var/run/.apacherestart&lt;br /&gt;
				restartapache&lt;br /&gt;
			else&lt;br /&gt;
				plog &amp;quot;Active Lock File Found&amp;quot;&lt;br /&gt;
			fi&lt;br /&gt;
		fi&lt;br /&gt;
	fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
case $1 in&lt;br /&gt;
        --cron)&lt;br /&gt;
                case $2 in&lt;br /&gt;
			on)&lt;br /&gt;
				enablecron&lt;br /&gt;
				;;&lt;br /&gt;
			off)&lt;br /&gt;
				disablecron&lt;br /&gt;
				;;&lt;br /&gt;
			change)&lt;br /&gt;
				disablecron&lt;br /&gt;
				enablecron&lt;br /&gt;
				;;&lt;br /&gt;
		esac&lt;br /&gt;
                ;;&lt;br /&gt;
        --help)&lt;br /&gt;
                echo &amp;quot;Apache Restart usage:&amp;quot;&lt;br /&gt;
		echo &amp;quot; --cron [on, change, off]&amp;quot;&lt;br /&gt;
		echo &amp;quot;	on: Turns on cron job and asks for time&amp;quot;&lt;br /&gt;
		echo &amp;quot;	change: Changes the cron time&amp;quot;&lt;br /&gt;
		echo &amp;quot;	off: Turns off the cron job&amp;quot;&lt;br /&gt;
                ;;&lt;br /&gt;
        *)&lt;br /&gt;
                checkload&lt;br /&gt;
                ;;&lt;br /&gt;
  esac&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==What to change==&lt;br /&gt;
&lt;br /&gt;
THRESH load threshold before trying to restart apache&lt;br /&gt;
&lt;br /&gt;
LOGROTATE number of lines to keep in the log before rotating.&lt;/div&gt;</summary>
		<author><name>Smsldoo</name></author>	</entry>

	<entry>
		<id>http://wiki.jamesdooley.us/index.php?title=Adig&amp;diff=572</id>
		<title>Adig</title>
		<link rel="alternate" type="text/html" href="http://wiki.jamesdooley.us/index.php?title=Adig&amp;diff=572"/>
				<updated>2014-03-25T14:30:34Z</updated>
		
		<summary type="html">&lt;p&gt;Smsldoo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Scripts]]&lt;br /&gt;
==Overview==&lt;br /&gt;
Advanced dig script that queries default name server on your workstation, google, the liquidweb name server and name servers returned by dig (/registrar).&lt;br /&gt;
&lt;br /&gt;
Good for finding differences being reported by different name servers.&lt;br /&gt;
&lt;br /&gt;
Searching for main domain will return all record types (A,MX,TXT,NS,CNAME etc).&lt;br /&gt;
&lt;br /&gt;
Searching for subdomain will generally only return CNAME and A records.&lt;br /&gt;
&lt;br /&gt;
Color codes records for easier viewing.&lt;br /&gt;
&lt;br /&gt;
'''This should not be installed on customer servers'''&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;&lt;br /&gt;
wget http://scripts.ent.liquidweb.com/adig -O /usr/bin/adig &amp;amp;&amp;amp; chmod +x /usr/bin/adig&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;&lt;br /&gt;
adig site.com&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Script==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
OIFS=$IFS;IFS=$'\n'&lt;br /&gt;
&lt;br /&gt;
function printresults {&lt;br /&gt;
        #$1 Title&lt;br /&gt;
        #$2 Message&lt;br /&gt;
        echo -e &amp;quot;\t\e[01;32m=== $1 ===\e[0m&amp;quot;&lt;br /&gt;
        for r in $(echo &amp;quot;$2&amp;quot;)&lt;br /&gt;
        do&lt;br /&gt;
                echo -e &amp;quot;`colorresult $r`&amp;quot;&lt;br /&gt;
        done&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function colorresult {&lt;br /&gt;
        rtype=`echo &amp;quot;$1&amp;quot; | awk '{print $4}'`&lt;br /&gt;
        case $rtype in&lt;br /&gt;
                A)&lt;br /&gt;
                        echo &amp;quot;\e[0;32m`echo &amp;quot;$1&amp;quot;`\e[0m&amp;quot;&lt;br /&gt;
                        ;;&lt;br /&gt;
                MX)&lt;br /&gt;
                        echo &amp;quot;\e[0;31m`echo &amp;quot;$1&amp;quot;`\e[0m&amp;quot;&lt;br /&gt;
                        ;;&lt;br /&gt;
                TXT)&lt;br /&gt;
                        echo &amp;quot;\e[0;34m`echo &amp;quot;$1&amp;quot;`\e[0m&amp;quot;&lt;br /&gt;
                        ;;&lt;br /&gt;
                NS)&lt;br /&gt;
                        echo &amp;quot;\e[0;36m`echo &amp;quot;$1&amp;quot;`\e[0m&amp;quot;&lt;br /&gt;
                        ;;&lt;br /&gt;
                CNAME)&lt;br /&gt;
                        echo &amp;quot;\e[0;35m`echo &amp;quot;$1&amp;quot;`\e[0m&amp;quot;&lt;br /&gt;
                        ;;&lt;br /&gt;
                *)&lt;br /&gt;
                        echo &amp;quot;$1&amp;quot;&lt;br /&gt;
                        ;;&lt;br /&gt;
        esac&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function getdig {&lt;br /&gt;
        #$1 domain&lt;br /&gt;
        #$2 against&lt;br /&gt;
        if [ -n &amp;quot;$2&amp;quot; ]&lt;br /&gt;
        then&lt;br /&gt;
                digresult=`dig $1 ANY +noall +answer @$2`&lt;br /&gt;
        else&lt;br /&gt;
                digresult=`dig $1 ANY +noall +answer`&lt;br /&gt;
        fi&lt;br /&gt;
        cleaned=`echo &amp;quot;$digresult&amp;quot; | grep -v &amp;quot;&amp;lt;&amp;lt;&amp;gt;&amp;gt;&amp;quot; | grep -ve &amp;quot;^;;&amp;quot; | sed &amp;quot;/^$/d&amp;quot; | sort -k 4`&lt;br /&gt;
        echo &amp;quot;$cleaned&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function getdigns {&lt;br /&gt;
		#$1 domain&lt;br /&gt;
		digresult=`dig +noall +authority $1 | awk '{print $5}'`&lt;br /&gt;
		cleaned=`echo &amp;quot;$digresult&amp;quot; | grep -v &amp;quot;&amp;lt;&amp;lt;&amp;gt;&amp;gt;&amp;quot; | grep -ve &amp;quot;^;;&amp;quot; | sed &amp;quot;/^$/d&amp;quot; | sort | sed &amp;quot;s/\.$//&amp;quot;`&lt;br /&gt;
		echo &amp;quot;${cleaned,,}&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function printusage {&lt;br /&gt;
		echo &amp;quot;Return dig results from several different name servers&amp;quot;&lt;br /&gt;
		echo &amp;quot;Usage: adig DOMAIN&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if [ ! -n &amp;quot;$1&amp;quot; ]&lt;br /&gt;
then&lt;br /&gt;
	printusage&lt;br /&gt;
	exit&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
printresults &amp;quot;Digging against resolv.conf&amp;quot; &amp;quot;`getdig $1`&amp;quot;&lt;br /&gt;
printresults &amp;quot;Digging against liquidweb.com&amp;quot; &amp;quot;`getdig $1 'ns.liquidweb.com'`&amp;quot;&lt;br /&gt;
printresults &amp;quot;Digging against google.com&amp;quot; &amp;quot;`getdig $1 '8.8.8.8'`&amp;quot;&lt;br /&gt;
&lt;br /&gt;
for i in $(getdigns $1)&lt;br /&gt;
do&lt;br /&gt;
        printresults &amp;quot;Digging against $i&amp;quot; &amp;quot;`getdig $1 $i`&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
IFS=$OIFS&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Smsldoo</name></author>	</entry>

	<entry>
		<id>http://wiki.jamesdooley.us/index.php?title=View_Domlogs_for_top_visitors&amp;diff=571</id>
		<title>View Domlogs for top visitors</title>
		<link rel="alternate" type="text/html" href="http://wiki.jamesdooley.us/index.php?title=View_Domlogs_for_top_visitors&amp;diff=571"/>
				<updated>2014-03-25T14:30:03Z</updated>
		
		<summary type="html">&lt;p&gt;Smsldoo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:One Liners]]&lt;br /&gt;
==Overview==&lt;br /&gt;
Enter a partial date string to get top visitors during that period. Will also return site and all user agents that IP has used.&lt;br /&gt;
==Script==&lt;br /&gt;
&lt;br /&gt;
===Standard===&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;&lt;br /&gt;
echo &amp;quot;Date String [31/Mar/2011:13:4]&amp;quot;; read datestring; \&lt;br /&gt;
for i in $(grep $datestring /usr/local/apache/domlogs/*/* | awk {'print $1'} | sort | uniq -c | sort -n | sed -e 's/^[ \t]*//' | awk '{print $1 &amp;quot;:&amp;quot; $2}' | tail -10); \&lt;br /&gt;
 do count=`echo $i | cut -d: -f1`; \&lt;br /&gt;
 ip=`echo $i | cut -d: -f3`; \&lt;br /&gt;
 domain=`echo $i | cut -d: -f2`; \&lt;br /&gt;
 agent=`grep $datestring $domain | grep $ip | cut -d '&amp;quot;' -f6 | sort | uniq -c | sort -n | awk {'print &amp;quot;\n\t&amp;quot; $0'}` ; \&lt;br /&gt;
 echo -e &amp;quot;$count $ip $domain $agent&amp;quot;; done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Auto Date===&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;&lt;br /&gt;
datestring=`date | awk '{print $3 &amp;quot;/&amp;quot; $2 &amp;quot;/&amp;quot; $6 &amp;quot;:&amp;quot; $4}' | sed 's/....$//'`; \&lt;br /&gt;
for i in $(grep $datestring /usr/local/apache/domlogs/*/* | awk {'print $1'} | sort | uniq -c | sort -n | sed -e 's/^[ \t]*//' | awk '{print $1 &amp;quot;:&amp;quot; $2}' | tail -10); \&lt;br /&gt;
 do count=`echo $i | cut -d: -f1`; \&lt;br /&gt;
 ip=`echo $i | cut -d: -f3`; \&lt;br /&gt;
 domain=`echo $i | cut -d: -f2`; \&lt;br /&gt;
 agent=`grep $datestring $domain | grep $ip | cut -d '&amp;quot;' -f6 | sort | uniq -c | sort -n | awk {'print &amp;quot;\n\t&amp;quot; $0'}` ; \&lt;br /&gt;
 echo -e &amp;quot;$count $ip $domain $agent&amp;quot;; done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Auto Date (Minus 10m)===&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;&lt;br /&gt;
datestring=`date -d &amp;quot;10 min ago&amp;quot; | awk '{print $3 &amp;quot;/&amp;quot; $2 &amp;quot;/&amp;quot; $6 &amp;quot;:&amp;quot; $4}' | sed 's/....$//'`; \&lt;br /&gt;
for i in $(grep $datestring /usr/local/apache/domlogs/*/* | awk {'print $1'} | sort | uniq -c | sort -n | sed -e 's/^[ \t]*//' | awk '{print $1 &amp;quot;:&amp;quot; $2}' | tail -10); \&lt;br /&gt;
 do count=`echo $i | cut -d: -f1`; \&lt;br /&gt;
 ip=`echo $i | cut -d: -f3`; \&lt;br /&gt;
 domain=`echo $i | cut -d: -f2`; \&lt;br /&gt;
 agent=`grep $datestring $domain | grep $ip | cut -d '&amp;quot;' -f6 | sort | uniq -c | sort -n | awk {'print &amp;quot;\n\t&amp;quot; $0'}` ; \&lt;br /&gt;
 echo -e &amp;quot;$count $ip $domain $agent&amp;quot;; done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Single Domain===&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;&lt;br /&gt;
echo &amp;quot;Date String [31/Mar/2011:13:4]&amp;quot;; read datestring; \&lt;br /&gt;
echo &amp;quot;File Name (with path)&amp;quot;; read logfile;\&lt;br /&gt;
for i in $(grep &amp;quot;$datestring&amp;quot; $logfile | awk {'print $1'} | sort | uniq -c | sort -n | sed -e 's/^[ \t]*//' | awk '{print $1 &amp;quot;:&amp;quot; $2}' | tail -10); \&lt;br /&gt;
 do count=`echo $i | cut -d: -f1`; \&lt;br /&gt;
 ip=`echo $i | cut -d: -f2`; \&lt;br /&gt;
 agent=`grep $datestring $logfile | grep $ip | cut -d '&amp;quot;' -f6 | sort | uniq -c | sort -n | awk {'print &amp;quot;\n\t&amp;quot; $0'}` ; \&lt;br /&gt;
 echo -e &amp;quot;$count $ip $domain $agent&amp;quot;; done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==What to change==&lt;br /&gt;
&lt;br /&gt;
Datestring&lt;br /&gt;
&lt;br /&gt;
The less information you put in to this the wider the search area.&lt;br /&gt;
&lt;br /&gt;
31/Mar/2011:13:4 will return 13:40 - 13:49&lt;br /&gt;
&lt;br /&gt;
31/Mar/2011:13 will return 13:00 - 13:59&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also the auto date (minus 10m) can be changed to go back a certain amount of time.&lt;br /&gt;
&lt;br /&gt;
By default this still only shows a 10 minute period.&lt;/div&gt;</summary>
		<author><name>Smsldoo</name></author>	</entry>

	<entry>
		<id>http://wiki.jamesdooley.us/index.php?title=Top_MySQL_Slow_Queries_from_log&amp;diff=570</id>
		<title>Top MySQL Slow Queries from log</title>
		<link rel="alternate" type="text/html" href="http://wiki.jamesdooley.us/index.php?title=Top_MySQL_Slow_Queries_from_log&amp;diff=570"/>
				<updated>2014-03-25T14:29:10Z</updated>
		
		<summary type="html">&lt;p&gt;Smsldoo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:One Liners]]&lt;br /&gt;
==Overview==&lt;br /&gt;
Sort the slow query log based on the query time and display the lines after it&lt;br /&gt;
&lt;br /&gt;
==Script==&lt;br /&gt;
===Display 2 lines before/after Query_time===&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;&lt;br /&gt;
slowlog=`grep log-slow-queries /etc/my.cnf | cut -d'=' -f2`; \&lt;br /&gt;
if [ -e &amp;quot;$slowlog&amp;quot; ]; then \&lt;br /&gt;
for i in $(grep -n Query_time $slowlog | sort -k3 -nr | head | cut -d: -f1); do line=`sed -n \`echo $i\`p $slowlog`; grep -B2 -A2 &amp;quot;$line&amp;quot; $slowlog;done; \&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Display 2 lines before and 3 lines after Query_time | less===&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;&lt;br /&gt;
slowlog=`grep log-slow-queries /etc/my.cnf | cut -d'=' -f2`; \&lt;br /&gt;
if [ -e &amp;quot;$slowlog&amp;quot; ]; then \&lt;br /&gt;
for i in $(grep -n Query_time $slowlog | sort -k3 -nr | head | cut -d: -f1); do line=`sed -n \`echo $i\`p $slowlog`; grep -B2 -A3 &amp;quot;$line&amp;quot; $slowlog;done \&lt;br /&gt;
fi | less&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Smsldoo</name></author>	</entry>

	<entry>
		<id>http://wiki.jamesdooley.us/index.php?title=Process_Usage_Scripts&amp;diff=569</id>
		<title>Process Usage Scripts</title>
		<link rel="alternate" type="text/html" href="http://wiki.jamesdooley.us/index.php?title=Process_Usage_Scripts&amp;diff=569"/>
				<updated>2014-03-25T14:28:51Z</updated>
		
		<summary type="html">&lt;p&gt;Smsldoo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:One Liners]]&lt;br /&gt;
==Overview==&lt;br /&gt;
Scripts to check total usage of running processes on server.&lt;br /&gt;
&lt;br /&gt;
==Total Memory Usage==&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;&lt;br /&gt;
for i in $(ps auxw | awk '{print $11}' | grep -v &amp;quot;\[&amp;quot; | sort | uniq | sort); do ps auxw | grep $i | awk '{total = total + $6}END{print total}' | xargs echo &amp;quot;$i &amp;quot; | awk '{print $2&amp;quot;:&amp;quot;$1}'; done | sort -k 1 -nr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Total Processor Usage==&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;&lt;br /&gt;
for i in $(ps auxw | awk '{ print $11}' | grep -v &amp;quot;\[&amp;quot; | sort | uniq |sort); do ps auxw |grep $i|awk '{total=total+$3}END{print total}'|xargs echo &amp;quot;$i&amp;quot; | awk '{print $2&amp;quot;:&amp;quot;$1}';done | sort -k 1 -nr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Smsldoo</name></author>	</entry>

	<entry>
		<id>http://wiki.jamesdooley.us/index.php?title=Mail_Bandwidth_Usage_Per_Email_Account&amp;diff=568</id>
		<title>Mail Bandwidth Usage Per Email Account</title>
		<link rel="alternate" type="text/html" href="http://wiki.jamesdooley.us/index.php?title=Mail_Bandwidth_Usage_Per_Email_Account&amp;diff=568"/>
				<updated>2014-03-25T14:28:32Z</updated>
		
		<summary type="html">&lt;p&gt;Smsldoo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:One Liners]]&lt;br /&gt;
==Overview==&lt;br /&gt;
This script is set up to copy the current php.ini file to a users directory and block web users from being able to view it in .htaccess.&lt;br /&gt;
&lt;br /&gt;
There are two versions of this script, one for SuPHP one without.&lt;br /&gt;
&lt;br /&gt;
==Script==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;&lt;br /&gt;
for address in $(grep ${DOMAIN} maillog | grep pop3d| awk '{print $7}' | cut -d &amp;quot;=&amp;quot; -f2 | sed 's/,//' | sort | uniq); &lt;br /&gt;
do grep $address maillog* | grep `date +%b` | grep pop3d | grep LOGOUT | awk '{print $13}' | cut -d &amp;quot;=&amp;quot; -f2 | sed 's/,//' | awk '{total=total+$1}END{print total}' | xargs echo &amp;quot;$address: &amp;quot;;done | sort -k 2 -nr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==What to change==&lt;br /&gt;
&lt;br /&gt;
${DOMAIN} will need to be changed for the domain name you want to search for&lt;br /&gt;
&lt;br /&gt;
pop3d can be changed to look at imap instead.&lt;/div&gt;</summary>
		<author><name>Smsldoo</name></author>	</entry>

	<entry>
		<id>http://wiki.jamesdooley.us/index.php?title=Hacker_Term_Search&amp;diff=567</id>
		<title>Hacker Term Search</title>
		<link rel="alternate" type="text/html" href="http://wiki.jamesdooley.us/index.php?title=Hacker_Term_Search&amp;diff=567"/>
				<updated>2014-03-25T14:27:43Z</updated>
		
		<summary type="html">&lt;p&gt;Smsldoo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:One Liners]]&lt;br /&gt;
==Overview==&lt;br /&gt;
Simple find statement coupled with a grep statement. Will return path of any file containing these terms. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Script==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;&lt;br /&gt;
find /home*/ -type f -name &amp;quot;*.htm*&amp;quot; -print0 -o -type f -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -il &amp;quot;hacked by\|script kitten&amp;quot; &amp;gt;&amp;gt; /home/malware_hits.txt&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==What to change==&lt;br /&gt;
&lt;br /&gt;
Change the terms in the grep statement.&lt;br /&gt;
&lt;br /&gt;
Hacked by is the most common, Kittens use the same terms on all of their pages. No need to be original.&lt;br /&gt;
&lt;br /&gt;
Additional terms can be added if looking for a specific hacker group.&lt;/div&gt;</summary>
		<author><name>Smsldoo</name></author>	</entry>

	<entry>
		<id>http://wiki.jamesdooley.us/index.php?title=Get_status_of_MalDet_hits&amp;diff=566</id>
		<title>Get status of MalDet hits</title>
		<link rel="alternate" type="text/html" href="http://wiki.jamesdooley.us/index.php?title=Get_status_of_MalDet_hits&amp;diff=566"/>
				<updated>2014-03-25T14:27:12Z</updated>
		
		<summary type="html">&lt;p&gt;Smsldoo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:One Liners]]&lt;br /&gt;
==Overview==&lt;br /&gt;
Get the status of files found in maldet scans. There are several different functions that can then be run.&lt;br /&gt;
&lt;br /&gt;
==Script==&lt;br /&gt;
There are two main versions: &lt;br /&gt;
&lt;br /&gt;
1) Look at only the last scan&lt;br /&gt;
&lt;br /&gt;
2) Look at the entire log&lt;br /&gt;
&lt;br /&gt;
===Last Scan Version===&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;&lt;br /&gt;
cat /usr/local/maldetect/sess/session.`cat /usr/local/maldetect/sess/session.last` | grep &amp;quot;{HEX}\|{MD5}&amp;quot; | awk '{print $3}' | xargs ls -lah $i 2&amp;gt;/dev/null&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===All Scans Version===&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;&lt;br /&gt;
grep &amp;quot;malware hit&amp;quot; /usr/local/maldetect/event_log | grep &amp;quot;{hexstring}\|{md5hash}&amp;quot; | awk '{print $11}' | xargs ls -lah $i 2&amp;gt;/dev/null&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==What to change==&lt;br /&gt;
Remove everything between the do and done&lt;br /&gt;
&lt;br /&gt;
===Read Files===&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;&lt;br /&gt;
cat /usr/local/maldetect/sess/session.`cat /usr/local/maldetect/sess/session.last` | grep &amp;quot;{HEX}\|{MD5}&amp;quot; | awk '{print $3}' | xargs vim 2&amp;gt;/dev/null&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Chmod 000===&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;&lt;br /&gt;
cat /usr/local/maldetect/sess/session.`cat /usr/local/maldetect/sess/session.last` | grep &amp;quot;{HEX}\|{MD5}&amp;quot; | awk '{print $3}' | xargs chmod 000 2&amp;gt;/dev/null&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Remove===&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;&lt;br /&gt;
cat /usr/local/maldetect/sess/session.`cat /usr/local/maldetect/sess/session.last` | grep &amp;quot;{HEX}\|{MD5}&amp;quot; | awk '{print $3}' | xargs rm -f 2&amp;gt;/dev/null&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Other uses==&lt;br /&gt;
===Check Directory Permissions===&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;&lt;br /&gt;
cat /usr/local/maldetect/sess/session.`cat /usr/local/maldetect/sess/session.last` | grep &amp;quot;{HEX}\|{MD5}&amp;quot; | awk '{print $3}' | rev | cut -d &amp;quot;/&amp;quot; -f2- | rev | uniq | xargs ls -ldh 2&amp;gt;/dev/null&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Chmod 644 (images)===&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;&lt;br /&gt;
cat /usr/local/maldetect/sess/session.`cat /usr/local/maldetect/sess/session.last` | grep &amp;quot;{HEX}\|{MD5}&amp;quot; | awk '{print $3}' | rev | cut -d &amp;quot;/&amp;quot; -f2- | rev | uniq | grep &amp;quot;image&amp;quot; | xargs chmod 0644&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Chmod 755 (other)===&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;&lt;br /&gt;
cat /usr/local/maldetect/sess/session.`cat /usr/local/maldetect/sess/session.last` | grep &amp;quot;{HEX}\|{MD5}&amp;quot; | awk '{print $3}' | rev | cut -d &amp;quot;/&amp;quot; -f2- | rev | uniq | grep -v &amp;quot;image&amp;quot; | xargs chmod 0755&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Stop Script Execution (images)===&lt;br /&gt;
Careful with this one, they may have legitimate scripts in these directories =_=&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;&lt;br /&gt;
for i in $(cat /usr/local/maldetect/sess/session.`cat /usr/local/maldetect/sess/session.last` | grep &amp;quot;{HEX}\|{MD5}&amp;quot; | awk '{print $3}' | rev | cut -d &amp;quot;/&amp;quot; -f2- | rev | uniq | grep -v &amp;quot;image&amp;quot;); \&lt;br /&gt;
do if [ ! -e $i/.htaccess] then; echo -e &amp;quot;Options None\nAddType text/plain .html .htm .shtml .php .php3 .phtml .phtm .pl .py .cgi\n&amp;quot; &amp;gt; $i/.htaccess; else; echo &amp;quot;$i already has .htaccess&amp;quot;; fi; done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Scan Types==&lt;br /&gt;
===Scan All Users Full Home Directories===&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;&lt;br /&gt;
maldet --update-ver; maldet --update; maldet -a /home?/?/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
===Scan All Users Public_HTML Directories===&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;&lt;br /&gt;
maldet --update-ver; maldet --update; maldet -a /home?/?/public_html&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Smsldoo</name></author>	</entry>

	<entry>
		<id>http://wiki.jamesdooley.us/index.php?title=Find_all_backups_for_user&amp;diff=565</id>
		<title>Find all backups for user</title>
		<link rel="alternate" type="text/html" href="http://wiki.jamesdooley.us/index.php?title=Find_all_backups_for_user&amp;diff=565"/>
				<updated>2014-03-25T14:25:44Z</updated>
		
		<summary type="html">&lt;p&gt;Smsldoo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:One Liners]]&lt;br /&gt;
==Overview==&lt;br /&gt;
Simple script to check /backup for cpanel backups with a user's name.&lt;br /&gt;
&lt;br /&gt;
==Script==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang='bash'&amp;gt;&lt;br /&gt;
find /backup -name &amp;lt;user&amp;gt; -exec ls -lah {} \;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==What to change==&lt;/div&gt;</summary>
		<author><name>Smsldoo</name></author>	</entry>

	</feed>