<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Crontab – Yeri Tiete</title><link>https://yeri.be/tag/crontab/</link><description>Yeri Tiete's blog</description><language>en</language><copyright>© Yeri Tiete</copyright><lastBuildDate>Sun, 30 Aug 2009 11:35:57 +0200</lastBuildDate><atom:link href="https://yeri.be/tag/crontab/index.xml" rel="self" type="application/rss+xml"/><item><title>Prowl: check server status (using ping)</title><link>https://yeri.be/prowl-check-server-status-using-ping/</link><pubDate>Sun, 30 Aug 2009 11:35:57 +0200</pubDate><author>Yeri Tiete</author><guid isPermaLink="true">https://yeri.be/prowl-check-server-status-using-ping/</guid><description>&lt;p&gt;Yesterday I&amp;rsquo;ve start using &lt;a href="http://prowl.weks.net/" target="_blank"&gt;Prowl&lt;/a&gt;, as I heard good comments about it. And one of the things I want it to check, are my server statuses. I made a quick script using bash and crontab to check every 10 min if it replies on ping. Per server, I created &amp;ldquo;host.domain.tld.sh&amp;rdquo; (e.g. zero.rootspirit.com.sh), and added this in the file:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-BASH" data-lang="BASH"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;&lt;/span&gt;&lt;span class="nv"&gt;KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;YourApiKey
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;HOST&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;zero.rootspirit.com
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ping -c &lt;span class="m"&gt;1&lt;/span&gt; &lt;span class="nv"&gt;$HOST&lt;/span&gt; &lt;span class="p"&gt;&amp;amp;&lt;/span&gt;&amp;gt;/dev/null
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nv"&gt;$?&lt;/span&gt; -ne &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -k -s &lt;span class="s2"&gt;&amp;#34;https://prowl.weks.net/publicapi/add?apikey=&lt;/span&gt;&lt;span class="nv"&gt;$KEY&lt;/span&gt;&lt;span class="s2"&gt;&amp;amp;application=Server%20Connectivity%20Failure&amp;amp;event=&amp;amp;description=&lt;/span&gt;&lt;span class="nv"&gt;$HOST&lt;/span&gt;&lt;span class="s2"&gt;&amp;amp;priority=2&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Of course, change KEY to &lt;a href="https://prowl.weks.net/settings.php" target="_blank"&gt;your API&lt;/a&gt; key, HOST to the IP or DNS of the server it should ping. Also, make sure, that when pinging on your host where you&amp;rsquo;ll run the bash script on, a non-existing domain actually returns:&lt;/p&gt;</description><content:encoded><![CDATA[<p>Yesterday I&rsquo;ve start using <a href="http://prowl.weks.net/" target="_blank">Prowl</a>, as I heard good comments about it.  And one of the things I want it to check, are my server statuses.  I made a quick script using bash and crontab to check every 10 min if it replies on ping.  Per server, I created &ldquo;host.domain.tld.sh&rdquo; (e.g. zero.rootspirit.com.sh), and added this in the file:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-BASH" data-lang="BASH"><span class="line"><span class="cl"><span class="cp">#!/bin/bash
</span></span></span><span class="line"><span class="cl"><span class="cp"></span><span class="nv">KEY</span><span class="o">=</span>YourApiKey
</span></span><span class="line"><span class="cl"><span class="nv">HOST</span><span class="o">=</span>zero.rootspirit.com
</span></span><span class="line"><span class="cl">ping -c <span class="m">1</span> <span class="nv">$HOST</span>   <span class="p">&amp;</span>&gt;/dev/null
</span></span><span class="line"><span class="cl"><span class="k">if</span> <span class="o">[</span> <span class="nv">$?</span> -ne <span class="m">0</span> <span class="o">]</span> <span class="p">;</span> <span class="k">then</span>
</span></span><span class="line"><span class="cl">curl -k -s <span class="s2">&#34;https://prowl.weks.net/publicapi/add?apikey=</span><span class="nv">$KEY</span><span class="s2">&amp;application=Server%20Connectivity%20Failure&amp;event=&amp;description=</span><span class="nv">$HOST</span><span class="s2">&amp;priority=2&#34;</span>
</span></span><span class="line"><span class="cl"><span class="k">fi</span>
</span></span></code></pre></div><p>Of course, change KEY to <a href="https://prowl.weks.net/settings.php" target="_blank">your API</a> key, HOST to the IP or DNS of the server it should ping.  Also, make sure, that when pinging on your host where you&rsquo;ll run the bash script on, a non-existing domain actually returns:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-BASH" data-lang="BASH"><span class="line"><span class="cl">ping: unknown host ezfzigjagaqg.reg
</span></span></code></pre></div><p>instead of</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-BASH" data-lang="BASH"><span class="line"><span class="cl">PING ezfzigjagaqg.reg.rootspirit.com <span class="o">(</span>85.12.6.130<span class="o">)</span> 56<span class="o">(</span>84<span class="o">)</span> bytes of data.
</span></span></code></pre></div><p>(Should depend on the search line in /etc/resolv.conf)  As I&rsquo;m pinging about 6 servers I created the file &ldquo;checkServers.sh&rdquo; with this content:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-BASH" data-lang="BASH"><span class="line"><span class="cl"><span class="cp">#!/bin/bash
</span></span></span><span class="line"><span class="cl"><span class="cp"></span>
</span></span><span class="line"><span class="cl"><span class="sb">`</span>/home/yeri/prowl/zero.rootspirit.com.sh <span class="p">&amp;</span>&gt;/dev/null<span class="sb">`</span>
</span></span><span class="line"><span class="cl"><span class="sb">`</span>/home/yeri/prowl/one.rootspirit.com.sh <span class="p">&amp;</span>&gt;/dev/null<span class="sb">`</span>
</span></span><span class="line"><span class="cl"><span class="sb">`</span>/home/yeri/prowl/two.rootspirit.com.sh <span class="p">&amp;</span>&gt;/dev/null<span class="sb">`</span>
</span></span><span class="line"><span class="cl"><span class="sb">`</span>/home/yeri/prowl/four.rootspirit.com.sh <span class="p">&amp;</span>&gt;/dev/null<span class="sb">`</span>
</span></span><span class="line"><span class="cl"><span class="sb">`</span>/home/yeri/prowl/vm0.rootspirit.com.sh <span class="p">&amp;</span>&gt;/dev/null<span class="sb">`</span>
</span></span><span class="line"><span class="cl"><span class="sb">`</span>/home/yeri/prowl/vm1.rootspirit.com.sh <span class="p">&amp;</span>&gt;/dev/null<span class="sb">`</span>
</span></span></code></pre></div><p>Make sure to chmod +x *.sh, to make it executable, and edit crontab and add something like that:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-BASH" data-lang="BASH"><span class="line"><span class="cl">*/10	*	*	*	*	/home/yeri/prowl/checkServers.sh <span class="p">&amp;</span>&gt;/dev/null
</span></span></code></pre></div><p>Don&rsquo;t forget to test it whether it works or not (try non-existing domain(s), and run the script again).</p>
]]></content:encoded><category>Apple</category><category>Linux</category><category>Networking</category><category>Software</category><category>bash</category><category>cron</category><category>crontab</category><category>iPhone</category><category>prowl</category><category>server status</category></item></channel></rss>