<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    <title>ameir dot net - Linux Luvin'</title>
    <link>http://www.ameir.net/blog/</link>
    <description>My little place on the web...</description>
    <dc:language>en</dc:language>
    <generator>Serendipity 1.5.3 - http://www.s9y.org/</generator>
    <pubDate>Sat, 13 Mar 2010 23:46:27 GMT</pubDate>

    <image>
        <url>http://www.ameir.net/blog/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: ameir dot net - Linux Luvin' - My little place on the web...</title>
        <link>http://www.ameir.net/blog/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>Getting Ubuntu 9.10 Karmic Koala working in OpenVZ</title>
    <link>http://www.ameir.net/blog/archives/41-Getting-Ubuntu-9.10-Karmic-Koala-working-in-OpenVZ.html</link>
            <category>Linux Luvin'</category>
    
    <comments>http://www.ameir.net/blog/archives/41-Getting-Ubuntu-9.10-Karmic-Koala-working-in-OpenVZ.html#comments</comments>
    <wfw:comment>http://www.ameir.net/blog/wfwcomment.php?cid=41</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://www.ameir.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=41</wfw:commentRss>
    

    <author>nospam@example.com (Ameir Abdeldayem)</author>
    <content:encoded>
    &lt;p&gt;If you&#039;re an Ubuntu fan like me and use (or want to use) OpenVZ, you might not be too excited that the &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/wiki.openvz.org/Download/template/precreated&#039;]);&quot;  href=&quot;http://wiki.openvz.org/Download/template/precreated&quot;&gt;OpenVZ site&lt;/a&gt; doesn&#039;t yet have the latest edition of Ubuntu, 9.10 Karmic Koala, available as a precreated template. &amp;#160;Luckily, you can find them &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/blog.bodhizazen.net/linux/download-ubuntu-9-10-openvz-templates/&#039;]);&quot;  href=&quot;http://blog.bodhizazen.net/linux/download-ubuntu-9-10-openvz-templates/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;For my purposes, I downloaded ubuntu-9.10-minimal_9.10_amd64.tar.gz. &amp;#160;After setting up a virtual instance with Proxmox and opening up a VNC session, I found that this template is way more minimal than I ever expected. &amp;#160;In all reality, that isn&#039;t so bad. &amp;#160;The lighter, the better. &amp;#160;Unfortunately, since I was setting up this new instance as a server, I had a good bit of work ahead of me.&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;Firstly, networking wasn&#039;t working at all with my bridged setup out of the box. &amp;#160;The solution:&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;edit /etc/network/interfaces and configure your NICs. &amp;#160;I had to comment out some properties of the venet0 interface to get things working. &amp;#160;Here&#039;s my final config file:&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;&lt;div class=&quot;bb-code-title&quot;&gt;CODE:&lt;/div&gt;&lt;div class=&quot;bb-code&quot;&gt;auto&amp;#160;lo&lt;br /&gt;
iface&amp;#160;lo&amp;#160;inet&amp;#160;loopback&lt;br /&gt;
auto&amp;#160;eth0&lt;br /&gt;
#&amp;#160;iface&amp;#160;eth0&amp;#160;inet&amp;#160;dhcp&lt;br /&gt;
iface&amp;#160;eth0&amp;#160;inet&amp;#160;static&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;address&amp;#160;10.x.x.x&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;netmask&amp;#160;255.255.255.0&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;gateway&amp;#160;10.x.x.y&lt;br /&gt;
&lt;br /&gt;
auto&amp;#160;venet0&lt;br /&gt;
iface&amp;#160;venet0&amp;#160;inet&amp;#160;static&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;address&amp;#160;127.0.0.1&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;netmask&amp;#160;255.255.255.255&lt;/div&gt;&amp;#160;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;Notice that I&#039;m using a static IP address. &amp;#160;You may want to try DHCP starting out since it&#039;ll make things easier. &amp;#160;Confirm network connectivity by pinging a remote host. &amp;#160;Don&#039;t forget to edit&amp;#160;/etc/resolv.conf if you need to.&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;Now, I need to get some goodies installed on this thing. &amp;#160;In the end, I&#039;m looking to install &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.virtualmin.com/&#039;]);&quot;  href=&quot;http://www.virtualmin.com/&quot;&gt;Virtualmin&lt;/a&gt; and host some websites, so I need to prep for that. &amp;#160;Luckily, Ubuntu makes it easy to get things started quickly. &amp;#160;Start off by issuing:&lt;/p&gt; &lt;br /&gt;
&lt;p&gt; &lt;br /&gt;
&lt;div class=&quot;bash geshi&quot; style=&quot;text-align: left&quot;&gt;&lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;apt-get&lt;/span&gt; update &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;apt-get&lt;/span&gt; &lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;install&lt;/span&gt; tasksel &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; tasksel&lt;/div&gt;&lt;br /&gt;
&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;An ncurses dialog should appear. &amp;#160;Go ahead and select what you need. &amp;#160;I can tell you that I learned the very hard way by not initially selecting &amp;quot;Basic Ubuntu Server.&amp;quot; &amp;#160;If you don&#039;t select that (don&#039;t worry, it&#039;s only a couple of small packages), none of your services will start at boot-time and you&#039;ll have to start&amp;#160;each of&amp;#160;them manually.&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;From there, you should be on your way. &amp;#160;I strongly recommend &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.webmin.com/deb.html&#039;]);&quot;  href=&quot;http://www.webmin.com/deb.html&quot;&gt;Webmin&lt;/a&gt;&amp;#160;(add the apt repo)&amp;#160;to ease server administration tasks.&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;Also, before I leave you be, if you&#039;re not using &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/pve.proxmox.com/wiki/Main_Page&#039;]);&quot;  href=&quot;http://pve.proxmox.com/wiki/Main_Page&quot;&gt;Proxmox&lt;/a&gt; to perform all of this OpenVZ magic, you&#039;re definitely missing out. &amp;#160;Hurry up and convert already!&lt;/p&gt; &lt;br /&gt;
&lt;p&gt; &lt;/p&gt; &lt;br /&gt;
&lt;p&gt; &lt;/p&gt; &lt;br /&gt;
&lt;p&gt; &lt;/p&gt; &lt;br /&gt;
&lt;p&gt; &lt;/p&gt; 
    </content:encoded>

    <pubDate>Wed, 30 Dec 2009 01:55:37 -0600</pubDate>
    <guid isPermaLink="false">http://www.ameir.net/blog/archives/41-guid.html</guid>
    
</item>
<item>
    <title>Setting up Virtualmin on Ubuntu 9.10 Karmic Koala</title>
    <link>http://www.ameir.net/blog/archives/40-Setting-up-Virtualmin-on-Ubuntu-9.10-Karmic-Koala.html</link>
            <category>Linux Luvin'</category>
    
    <comments>http://www.ameir.net/blog/archives/40-Setting-up-Virtualmin-on-Ubuntu-9.10-Karmic-Koala.html#comments</comments>
    <wfw:comment>http://www.ameir.net/blog/wfwcomment.php?cid=40</wfw:comment>

    <slash:comments>3</slash:comments>
    <wfw:commentRss>http://www.ameir.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=40</wfw:commentRss>
    

    <author>nospam@example.com (Ameir Abdeldayem)</author>
    <content:encoded>
    &lt;p&gt;&lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.virtualmin.com/os-support&#039;]);&quot;  href=&quot;http://www.virtualmin.com/os-support&quot;&gt;According to the Virtualmin website&lt;/a&gt;, the latest version of Ubuntu that is supported is 8.04 LTS. &amp;#160;That&#039;s probably a safe stance to take since non-LTS versions of Ubuntu have a six-month lifecycle, and most serious hosting companies would stick with LTS versions. &amp;#160;For those of us who live on the bleeding edge and want to try Virtualmin on the latest version of Ubuntu, 9.10 (Karmic Koala), you&#039;ll find that the standard method of installation (&lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.virtualmin.com/download&#039;]);&quot;  href=&quot;http://www.virtualmin.com/download&quot;&gt;the install.sh script on their site&lt;/a&gt;) will fail.&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;Luckily, the solution is simple. &amp;#160; &lt;/p&gt; &lt;br /&gt;
&lt;p&gt;Add the following repository to your sources.list file:&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;&lt;div class=&quot;bash geshi&quot; style=&quot;text-align: left&quot;&gt;deb http:&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;//&lt;/span&gt;software.virtualmin.com&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;gpl&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;debian virtualmin-universal main&lt;/div&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;Then run the following as root:&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;&lt;div class=&quot;bash geshi&quot; style=&quot;text-align: left&quot;&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;cd&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;root &lt;br /&gt;&lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;wget&lt;/span&gt; http:&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;//&lt;/span&gt;software.virtualmin.com&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;lib&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;RPM-GPG-KEY-virtualmin&lt;br /&gt;&lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;wget&lt;/span&gt; http:&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;//&lt;/span&gt;software.virtualmin.com&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;lib&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;RPM-GPG-KEY-webmin&lt;br /&gt;&lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;apt-key&lt;/span&gt; add RPM-GPG-KEY-virtualmin&lt;br /&gt;&lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;apt-key&lt;/span&gt; add RPM-GPG-KEY-webmin&lt;br /&gt;&lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;apt-get&lt;/span&gt; update ; &lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;apt-get&lt;/span&gt; &lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;install&lt;/span&gt; webmin webmin-virtual-server&lt;/div&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;Webmin and Virtualmin will now be installed. &amp;#160;Note that the repository may not be as up-to-date as the &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/download.webmin.com/download/virtualmin/?C=M;O=D&#039;]);&quot;  href=&quot;http://download.webmin.com/download/virtualmin/?C=M;O=D&quot;&gt;direct download link&lt;/a&gt;. &amp;#160;If that scenario arises, simply find the URL of the latest Virtualmin package from the link, and do:&lt;div class=&quot;bash geshi&quot; style=&quot;text-align: left&quot;&gt;&lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;wget&lt;/span&gt; http:&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;//&lt;/span&gt;download.webmin.com&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;download&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;virtualmin&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;webmin-virtual-server_3.77.gpl_all.deb ; &lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;dpkg&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;-i&lt;/span&gt; webmin-virtual-server_3.77.gpl_all.deb&lt;/div&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt; &lt;/p&gt; 
    </content:encoded>

    <pubDate>Sat, 19 Dec 2009 14:59:36 -0600</pubDate>
    <guid isPermaLink="false">http://www.ameir.net/blog/archives/40-guid.html</guid>
    
</item>
<item>
    <title>GWMover:  WAN Failover Script for Linux</title>
    <link>http://www.ameir.net/blog/archives/36-GWMover-WAN-Failover-Script-for-Linux.html</link>
            <category>Linux Luvin'</category>
    
    <comments>http://www.ameir.net/blog/archives/36-GWMover-WAN-Failover-Script-for-Linux.html#comments</comments>
    <wfw:comment>http://www.ameir.net/blog/wfwcomment.php?cid=36</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.ameir.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=36</wfw:commentRss>
    

    <author>nospam@example.com (Ameir Abdeldayem)</author>
    <content:encoded>
    &lt;br /&gt;
&lt;p&gt;This is a script I wrote a while back but never posted up.  It allows you to switch from one gateway to another by repeatedly pinging your ISP gateway (or another external IP) and--upon detection of failure--switching to another gateway.  If the primary line is up upon the next run, we switch over to it.&lt;/p&gt;&lt;p&gt;This isn&#039;t a very advanced script and doesn&#039;t factor in other considerations, such as the state of the physical interfaces.  It simply attempts a number of pings, and considers the link dead or unreliable if they don&#039;t all come back.&lt;/p&gt;&lt;p&gt;If you have mutt installed, you will get an email alert when the primary link is considered &#039;dead.&#039;  You can easily change this behavior by modifying the script.&lt;/p&gt;&lt;p&gt;It will probably work on other POSIX/Unix-like OSes, but I&#039;ve only tested it on Linux in a BASH environment.  With all that said, here are the goods:&lt;/p&gt;&lt;p&gt;&lt;br /&gt;
&lt;div class=&quot;bb-code-title&quot;&gt;CODE:&lt;/div&gt;&lt;div class=&quot;bb-code&quot;&gt;#!/bin/bash&lt;br /&gt;
#&amp;#160;GWMover&amp;#58;&amp;#160;&amp;#160;WAN/Gateway&amp;#160;failover&lt;br /&gt;
#&amp;#160;	Pings&amp;#160;gateway&amp;#160;and&amp;#160;switches&amp;#160;to&amp;#160;backup&amp;#160;line&amp;#160;when&amp;#160;it&amp;#160;goes&amp;#160;down.&lt;br /&gt;
#&amp;#160;	Reverts&amp;#160;to&amp;#160;primary&amp;#160;line&amp;#160;when&amp;#160;gateway&amp;#160;becomes&amp;#160;accessible.&lt;br /&gt;
#&amp;#160;Modified&amp;#160;version&amp;#160;of&amp;#160;script&amp;#160;found&amp;#160;at&amp;#58;&lt;br /&gt;
#&amp;#160;http&amp;#58;//www.howtoforge.com/forums/showthread.php?p=55402#post55402&lt;br /&gt;
#&lt;br /&gt;
#&amp;#160;Last&amp;#160;modified&amp;#58;&amp;#160;&amp;#160;August&amp;#160;2,&amp;#160;2007&lt;br /&gt;
#&amp;#160;Ameir&amp;#160;Abdeldayem&lt;br /&gt;
&lt;br /&gt;
PRIMARYPUB=&amp;#34;66.92.162.1&amp;#34;&lt;br /&gt;
PRIMARYGW=&amp;#34;10.0.5.1&amp;#34;&lt;br /&gt;
SECONDARYGW=&amp;#34;10.0.0.1&amp;#34;&lt;br /&gt;
&lt;br /&gt;
EMAILS=&amp;#34;email@ddress1&amp;#160;email@ddress2&amp;#34;&lt;br /&gt;
&lt;br /&gt;
function&amp;#160;is_host_alive&amp;#40;&amp;#41;&amp;#160;#&amp;#160;Returns&amp;#160;success&amp;#160;or&amp;#160;failure&amp;#160;as&amp;#160;boolean&lt;br /&gt;
{&lt;br /&gt;
	PACKETS=3&lt;br /&gt;
	TRIES=5&lt;br /&gt;
	IP=$1&amp;#160;#&amp;#160;saving&amp;#160;contents&amp;#160;in&amp;#160;$1&amp;#160;before&amp;#160;is&amp;#160;used&lt;br /&gt;
	echo&amp;#160;&amp;#34;Pinging&amp;#160;$IP&amp;#34;&lt;br /&gt;
	i=0&lt;br /&gt;
	while&amp;#160;&amp;#91;&amp;#160;$i&amp;#160;-lt&amp;#160;$TRIES&amp;#160;&amp;#93;;&amp;#160;do&lt;br /&gt;
		REQUEST=$&amp;#40;ping&amp;#160;-qc&amp;#160;$PACKETS&amp;#160;$IP&amp;#160;|grep&amp;#160;packets|&amp;#160;cut&amp;#160;-d&amp;#34;&amp;#160;&amp;#34;&amp;#160;-f1,4&amp;#41;&lt;br /&gt;
		set&amp;#160;--&amp;#160;$REQUEST&lt;br /&gt;
		echo&amp;#160;-e&amp;#160;&amp;#34;Try&amp;#160;$i&amp;#58;&amp;#160;$1&amp;#160;$2&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#34;&lt;br /&gt;
		if&amp;#160;&amp;#91;&amp;#160;$1&amp;#160;!=&amp;#160;$2&amp;#160;&amp;#93;;&amp;#160;then&lt;br /&gt;
			echo&amp;#160;&amp;#34;Bad&amp;#160;news.&amp;#160;$1&amp;#160;sent,&amp;#160;$2&amp;#160;received.&amp;#34;&lt;br /&gt;
			#&amp;#160;exit&lt;br /&gt;
			exitcode=1&lt;br /&gt;
		else&lt;br /&gt;
			echo&amp;#160;&amp;#34;Great!&amp;#160;$1&amp;#160;sent,&amp;#160;$2&amp;#160;received.&amp;#34;&lt;br /&gt;
			exitcode=0&lt;br /&gt;
		fi&lt;br /&gt;
		i=$&amp;#40;expr&amp;#160;$i&amp;#160;+&amp;#160;1&amp;#41;&lt;br /&gt;
	done&lt;br /&gt;
	return&amp;#160;$exitcode&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
CURRENTGW=`route&amp;#160;|&amp;#160;grep&amp;#160;&amp;#34;default&amp;#34;&amp;#160;|&amp;#160;awk&amp;#160;&#039;{print&amp;#160;$2}&#039;`&lt;br /&gt;
function&amp;#160;changegateway&amp;#40;&amp;#41;&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
	if&amp;#160;&amp;#91;&amp;#160;$1&amp;#160;!=&amp;#160;$CURRENTGW&amp;#160;&amp;#93;;&amp;#160;then&lt;br /&gt;
		echo&amp;#160;&amp;#34;.&amp;#160;&amp;#160;We&amp;#160;need&amp;#160;to&amp;#160;change&amp;#160;the&amp;#160;default&amp;#160;route.&amp;#160;After&amp;#58;&amp;#160;$1&amp;#160;Before&amp;#58;&amp;#160;$2&amp;#34;&lt;br /&gt;
		route&amp;#160;add&amp;#160;default&amp;#160;gw&amp;#160;$1&lt;br /&gt;
		route&amp;#160;del&amp;#160;default&amp;#160;gw&amp;#160;$2&lt;br /&gt;
		echo&amp;#160;&amp;#34;The&amp;#160;routing&amp;#160;table&amp;#160;has&amp;#160;been&amp;#160;changed!&amp;#34;&lt;br /&gt;
		route&amp;#160;#&amp;#160;view&amp;#160;current&amp;#160;routing&amp;#160;table&lt;br /&gt;
		echo&amp;#160;-e&amp;#160;&amp;#34;$4&amp;#160;\n\nHere&amp;#160;is&amp;#160;the&amp;#160;updated&amp;#160;routing&amp;#160;table&amp;#58;\n$&amp;#40;route&amp;#41;&amp;#34;&amp;#160;|&amp;#160;mutt&amp;#160;-s&amp;#160;&amp;#34;$3&amp;#160;&amp;#40;$&amp;#40;hostname&amp;#41;&amp;#41;&amp;#34;&amp;#160;$EMAILS&lt;br /&gt;
	else&lt;br /&gt;
		echo&amp;#160;&amp;#34;,&amp;#160;and&amp;#160;we&amp;#160;are&amp;#160;already&amp;#160;pointing&amp;#160;to&amp;#160;it.&amp;#34;&lt;br /&gt;
	fi&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function&amp;#160;test&amp;#40;&amp;#41;&lt;br /&gt;
{&lt;br /&gt;
	echo&amp;#160;$1&amp;#160;$EMAILS&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
##################&lt;br /&gt;
#&amp;#160;main&amp;#160;starts&amp;#160;here&lt;br /&gt;
##################&lt;br /&gt;
&lt;br /&gt;
if&amp;#160;is_host_alive&amp;#160;$PRIMARYPUB&amp;#160;;&amp;#160;then&lt;br /&gt;
	echo&amp;#160;-n&amp;#160;&amp;#34;The&amp;#160;primary&amp;#160;gateway&amp;#160;is&amp;#160;alive&amp;#34;&lt;br /&gt;
	SUBJECT=&amp;#34;$PRIMARYPUB&amp;#160;IS&amp;#160;NOW&amp;#160;UP&amp;#34;;&amp;#160;BODY=&amp;#34;The&amp;#160;server&amp;#160;$PRIMARYPUB&amp;#160;is&amp;#160;now&amp;#160;up&amp;#160;and&amp;#160;was&amp;#160;pinged&amp;#160;via&amp;#160;the&amp;#160;current&amp;#160;gateway&amp;#160;of&amp;#160;$CURRENTGW.&amp;#34;&lt;br /&gt;
	changegateway&amp;#160;$PRIMARYGW&amp;#160;$SECONDARYGW&amp;#160;&amp;#34;$SUBJECT&amp;#34;&amp;#160;&amp;#34;$BODY&amp;#34;&lt;br /&gt;
#	test&amp;#160;$PRIMARYGW&lt;br /&gt;
else&lt;br /&gt;
	echo&amp;#160;-n&amp;#160;&amp;#34;The&amp;#160;primary&amp;#160;gateway&amp;#160;is&amp;#160;dead&amp;#160;&amp;#60;img&amp;#160;src=&quot;http://www.ameir.net/blog/templates/default/img/emoticons/sad.png&quot;&amp;#160;alt=&quot;&amp;#58;-&amp;#40;&quot;&amp;#160;style=&quot;display&amp;#58;&amp;#160;inline;&amp;#160;vertical-align&amp;#58;&amp;#160;bottom;&quot;&amp;#160;class=&quot;emoticon&quot;&amp;#160;/&amp;#62;&amp;#160;We&amp;#160;should&amp;#160;be&amp;#160;on&amp;#160;the&amp;#160;backup&amp;#160;line&amp;#34;&lt;br /&gt;
	SUBJECT=&amp;#34;$PRIMARYPUB&amp;#160;IS&amp;#160;DOWN&amp;#34;;&amp;#160;BODY=&amp;#34;The&amp;#160;server&amp;#160;$PRIMARYPUB&amp;#160;could&amp;#160;not&amp;#160;be&amp;#160;pinged&amp;#160;via&amp;#160;the&amp;#160;current&amp;#160;gateway&amp;#160;of&amp;#160;$CURRENTGW.&amp;#34;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;changegateway&amp;#160;$SECONDARYGW&amp;#160;$PRIMARYGW&amp;#160;&amp;#34;$SUBJECT&amp;#34;&amp;#160;&amp;#34;$BODY&amp;#34;&lt;br /&gt;
fi&lt;/div&gt;&lt;/p&gt;&lt;p&gt;Download it &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/download/files/gwmover.sh&#039;]);&quot;  href=&quot;http://www.ameir.net/files/gwmover.sh&quot; title=&quot;gwmover.sh&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Sun, 22 Mar 2009 01:19:23 -0500</pubDate>
    <guid isPermaLink="false">http://www.ameir.net/blog/archives/36-guid.html</guid>
    
</item>
<item>
    <title>Sync SVN repository with remote FTP server</title>
    <link>http://www.ameir.net/blog/archives/35-Sync-SVN-repository-with-remote-FTP-server.html</link>
            <category>Linux Luvin'</category>
    
    <comments>http://www.ameir.net/blog/archives/35-Sync-SVN-repository-with-remote-FTP-server.html#comments</comments>
    <wfw:comment>http://www.ameir.net/blog/wfwcomment.php?cid=35</wfw:comment>

    <slash:comments>11</slash:comments>
    <wfw:commentRss>http://www.ameir.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=35</wfw:commentRss>
    

    <author>nospam@example.com (Ameir Abdeldayem)</author>
    <content:encoded>
    &lt;br /&gt;
&lt;p&gt;This script was written for the company I work for well over a year ago, but I just decided to release it to the public now.  It has been in use all of this time and is still in use now, so that should tell you that it&#039;s a pretty reliable script.  Any bugs we encountered over the course of using this program have been fixed.  Hopefully you&#039;ll have the same luck as us.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Basics:&lt;/b&gt;&lt;/p&gt;&lt;p&gt;This script is run as a SVN hook (post-commit).  After committing changes to your subversion repository, this script is invoked and synchronization begins.  The script creates a local copy of the repository, and files just committed are sent via FTP.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Usage:&lt;/b&gt;&lt;/p&gt;&lt;p&gt;One copy of the script can be used for an unlimited number of repositories, so the script can be placed in a globally-available location.  In our scenario, we placed the script at /usr/local/bin/svn2ftp.sh .  There are four command-line arguments to the script that are required.  The first two arguments can be kept the same as below, as they&#039;re passed to the script by subversion.  The third parameter is the path between the repository and the trunk (e.g., if your SVN path is http://&amp;lt;host&amp;gt;/svn/repo/dir/trunk, then you&#039;d put &amp;quot;dir&amp;quot; as the parameter; otherwise, you&#039;d put &amp;quot;.&amp;quot; if there&#039;s no directory in between).  The fourth parameter is the full path to the config file of the repo.  A sample to put in repo/hooks/post-commit:&lt;/p&gt;&lt;p&gt;&lt;div class=&quot;bb-code-title&quot;&gt;CODE:&lt;/div&gt;&lt;div class=&quot;bb-code&quot;&gt;#&amp;#160;Update&amp;#160;this&amp;#160;repo&amp;#160;with&amp;#160;remote&amp;#160;FTP&amp;#160;server&lt;br /&gt;
DATE=`date&amp;#160;+&#039;%m-%d-%Y&#039;`&lt;br /&gt;
/usr/local/bin/svn2ftp.sh&amp;#160;&amp;#34;$REPOS&amp;#34;&amp;#160;&amp;#34;$REV&amp;#34;&amp;#160;&amp;#34;.&amp;#34;&amp;#160;&amp;#34;/svn2ftp/conf/repo.conf&amp;#34;&amp;#160;&amp;#62;&amp;#62;&amp;#160;/svn2ftp/logs/repo-$DATE.log&lt;/div&gt;&lt;/p&gt;&lt;p&gt;We have our directory structure as follows, but you can change it as you please:&lt;/p&gt;&lt;p&gt;/svn2ftp/conf     #  Where config files are stored&lt;/p&gt;&lt;p&gt;/svn2ftp/logs     #  Where log files are stored&lt;/p&gt;&lt;p&gt;/svn2ftp/repos   #  Where raw repo contents are stored&lt;/p&gt;A sample config file can be found below.&lt;br /&gt;&lt;p&gt;&lt;b&gt;The code:&lt;/b&gt;&lt;/p&gt;&lt;p&gt;I initially wrote this program using the Linux &#039;ftp&#039; program.  It works well and all, but if I encounter server or any other errors, the program still exits with a successful error code.  This was a bummer in our situation, so I wrote an FTP client in PHP that reports errors correctly.  When an error is encountered, files that were not uploaded successfully will be retried upon the next commit.  Links to both versions, as well as the config file, are below:&lt;/p&gt;&lt;p&gt;&lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/download/files/svn2ftp.sh&#039;]);&quot;  href=&quot;http://www.ameir.net/files/svn2ftp.sh&quot;&gt;Version using Linux &#039;ftp&#039; program&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/download/files/svn2ftp-php.sh&#039;]);&quot;  href=&quot;http://www.ameir.net/files/svn2ftp-php.sh&quot;&gt;Version using PHP FTP program&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/download/files/svn2ftp-php.sh&#039;]);&quot;  href=&quot;http://www.ameir.net/files/svn2ftp-php.sh&quot;&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/download/files/svn2ftp-php.sh&#039;]);&quot;  href=&quot;http://www.ameir.net/files/svn2ftp-php.sh&quot;&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.ameir.net/files/repo.conf&quot;&gt;Sample config file&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.ameir.net/files/ftpupdate-php.txt&quot;&gt;PHP FTP Updater&lt;/a&gt;&lt;/p&gt;&lt;p /&gt; 
    </content:encoded>

    <pubDate>Mon, 19 Jan 2009 21:08:29 -0600</pubDate>
    <guid isPermaLink="false">http://www.ameir.net/blog/archives/35-guid.html</guid>
    
</item>
<item>
    <title>Installing Camelia OCaml IDE on Ubuntu Gutsy Gibbon</title>
    <link>http://www.ameir.net/blog/archives/28-Installing-Camelia-OCaml-IDE-on-Ubuntu-Gutsy-Gibbon.html</link>
            <category>Linux Luvin'</category>
    
    <comments>http://www.ameir.net/blog/archives/28-Installing-Camelia-OCaml-IDE-on-Ubuntu-Gutsy-Gibbon.html#comments</comments>
    <wfw:comment>http://www.ameir.net/blog/wfwcomment.php?cid=28</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://www.ameir.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=28</wfw:commentRss>
    

    <author>nospam@example.com (Ameir Abdeldayem)</author>
    <content:encoded>
    &lt;br /&gt;
[will be filled in later; put up for immediate use]&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;bb-code-title&quot;&gt;CODE:&lt;/div&gt;&lt;div class=&quot;bb-code&quot;&gt;sudo&amp;#160;apt-get&amp;#160;update&lt;br /&gt;
sudo&amp;#160;apt-get&amp;#160;install&amp;#160;g++&lt;br /&gt;
sudo&amp;#160;apt-get&amp;#160;install&amp;#160;qt3-dev-tools&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
tar xvfz camelia-1.1.tar.gz&lt;br /&gt;
cd src&lt;br /&gt;
sudo ./config&lt;br /&gt;
sudo make&lt;br /&gt;
sudo make install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sudo nano console/console.h&lt;br /&gt;
&lt;br /&gt;
look for the following block of code and insert the last line:&lt;br /&gt;
&lt;br /&gt;
class OProcess;&lt;br /&gt;
#include &amp;quot;ocamlprocess.h&amp;quot;&lt;br /&gt;
#include &amp;quot;debugprocess.h&amp;quot;&lt;br /&gt;
#include &amp;quot;olineedit.h&amp;quot;&lt;br /&gt;
#include &amp;quot;color.h&amp;quot;&lt;br /&gt;
#include &amp;quot;debugger/debug.h&amp;quot;&lt;br /&gt;
class Debugger;&lt;br /&gt;
class OCamlProcess;  // insert this line here&lt;br /&gt;
&lt;br /&gt;
You&#039;ll get an error regarding the tips if you don&#039;t complete this step:&lt;br /&gt;
sudo chmod -R 755  /usr/local/lib/camelia/tips/&lt;br /&gt;
&lt;br /&gt;
Finally, run Camelia:&lt;br /&gt;
/usr/local/bin/camelia&lt;br /&gt;
You can also simply type &quot;camelia&quot; at the command line, so long as /usr/local/bin/ is in your $PATH; it should be on a default Ubuntu install. 
    </content:encoded>

    <pubDate>Sat, 03 Nov 2007 22:49:15 -0500</pubDate>
    <guid isPermaLink="false">http://www.ameir.net/blog/archives/28-guid.html</guid>
    
</item>
<item>
    <title>My Favorite Filesharing Services</title>
    <link>http://www.ameir.net/blog/archives/19-My-Favorite-Filesharing-Services.html</link>
            <category>Linux Luvin'</category>
    
    <comments>http://www.ameir.net/blog/archives/19-My-Favorite-Filesharing-Services.html#comments</comments>
    <wfw:comment>http://www.ameir.net/blog/wfwcomment.php?cid=19</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.ameir.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=19</wfw:commentRss>
    

    <author>nospam@example.com (Ameir Abdeldayem)</author>
    <content:encoded>
    &lt;p&gt;A good filehost is important for use in many different applications.  It can help you to share large files with friends and colleagues, and can really be useful in more life-saving applications, such as backups.  I use these services to accomplish both, although I do admit I rely on them heavily in parallel with my backup scripts; I get a nightly backup of each of my MySQL databases to multiple email accounts, as well as to FTP.  I know it&#039;s super-redundant to happen this way, but I learned my lesson from the past.  Plus, this level of redundancy is pretty nice.  Here is a list of some of the file hosts that I use, and will update the table later with more details.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;table cellspacing=&quot;1&quot; cellpadding=&quot;1&quot; border=&quot;1&quot; style=&quot;width: 100%;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;width: 20%;&quot;&gt;&lt;b&gt;Name&lt;/b&gt;&lt;/td&gt;&lt;td style=&quot;width: 20%;&quot;&gt;&lt;b&gt;Filesize Limit&lt;/b&gt;&lt;/td&gt;&lt;td style=&quot;width: 20%;&quot;&gt;&lt;b&gt;Download Speed&lt;/b&gt;&lt;/td&gt;&lt;td style=&quot;width: 20%;&quot;&gt;&lt;b&gt;Upload Speed&lt;/b&gt;&lt;/td&gt;&lt;td style=&quot;width: 20%;&quot;&gt;&lt;b&gt;Comments&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;width: 20%;&quot;&gt;www.oxyshare.com&lt;/td&gt;&lt;td style=&quot;width: 20%;&quot;&gt;700Mb&lt;/td&gt;&lt;td style=&quot;width: 20%;&quot;&gt;?&lt;/td&gt;&lt;td style=&quot;width: 20%;&quot;&gt;?&lt;/td&gt;&lt;td style=&quot;width: 20%;&quot;&gt;Used to be my favorite file host until things started going wrong.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;width: 20%;&quot;&gt;www.up-file.com&lt;/td&gt;&lt;td style=&quot;width: 20%;&quot;&gt;2GB&lt;/td&gt;&lt;td style=&quot;width: 20%;&quot;&gt;?&lt;/td&gt;&lt;td style=&quot;width: 20%;&quot;&gt;?&lt;/td&gt;&lt;td style=&quot;width: 20%;&quot;&gt;?&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;width: 20%;&quot;&gt;www.mediafire.com&lt;/td&gt;&lt;td style=&quot;width: 20%;&quot;&gt;100MB&lt;/td&gt;&lt;td style=&quot;width: 20%;&quot;&gt;?&lt;/td&gt;&lt;td style=&quot;width: 20%;&quot;&gt;?&lt;/td&gt;&lt;td style=&quot;width: 20%;&quot;&gt;?&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;width: 20%;&quot;&gt;www.gigasize.com&lt;/td&gt;&lt;td style=&quot;width: 20%;&quot;&gt;?&lt;/td&gt;&lt;td style=&quot;width: 20%;&quot;&gt;?&lt;/td&gt;&lt;td style=&quot;width: 20%;&quot;&gt;?&lt;/td&gt;&lt;td style=&quot;width: 20%;&quot;&gt;?&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;width: 20%;&quot;&gt;www.mihd.net&lt;/td&gt;&lt;td style=&quot;width: 20%;&quot;&gt;1GB&lt;/td&gt;&lt;td style=&quot;width: 20%;&quot;&gt;?&lt;/td&gt;&lt;td style=&quot;width: 20%;&quot;&gt;?&lt;/td&gt;&lt;td style=&quot;width: 20%;&quot;&gt;?&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;width: 20%;&quot;&gt;www.files-upload.com&lt;/td&gt;&lt;td style=&quot;width: 20%;&quot;&gt;1GB&lt;/td&gt;&lt;td style=&quot;width: 20%;&quot;&gt;?&lt;/td&gt;&lt;td style=&quot;width: 20%;&quot;&gt;?&lt;/td&gt;&lt;td style=&quot;width: 20%;&quot;&gt;?&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;width: 20%;&quot;&gt;&lt;/td&gt;&lt;td style=&quot;width: 20%;&quot;&gt;&lt;/td&gt;&lt;td style=&quot;width: 20%;&quot;&gt;&lt;/td&gt;&lt;td style=&quot;width: 20%;&quot;&gt;&lt;/td&gt;&lt;td style=&quot;width: 20%;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;width: 20%;&quot;&gt;&lt;/td&gt;&lt;td style=&quot;width: 20%;&quot;&gt;&lt;/td&gt;&lt;td style=&quot;width: 20%;&quot;&gt;&lt;/td&gt;&lt;td style=&quot;width: 20%;&quot;&gt;&lt;/td&gt;&lt;td style=&quot;width: 20%;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;width: 20%;&quot;&gt;&lt;/td&gt;&lt;td style=&quot;width: 20%;&quot;&gt;&lt;/td&gt;&lt;td style=&quot;width: 20%;&quot;&gt;&lt;/td&gt;&lt;td style=&quot;width: 20%;&quot;&gt;&lt;/td&gt;&lt;td style=&quot;width: 20%;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; 
    </content:encoded>

    <pubDate>Sat, 18 Nov 2006 03:47:53 -0600</pubDate>
    <guid isPermaLink="false">http://www.ameir.net/blog/archives/19-guid.html</guid>
    
</item>
<item>
    <title>MySQL Backup to FTP and Email Shell Script for Cron v2.1</title>
    <link>http://www.ameir.net/blog/archives/18-MySQL-Backup-to-FTP-and-Email-Shell-Script-for-Cron-v2.1.html</link>
            <category>Linux Luvin'</category>
    
    <comments>http://www.ameir.net/blog/archives/18-MySQL-Backup-to-FTP-and-Email-Shell-Script-for-Cron-v2.1.html#comments</comments>
    <wfw:comment>http://www.ameir.net/blog/wfwcomment.php?cid=18</wfw:comment>

    <slash:comments>84</slash:comments>
    <wfw:commentRss>http://www.ameir.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=18</wfw:commentRss>
    

    <author>nospam@example.com (Ameir Abdeldayem)</author>
    <content:encoded>
    &lt;br /&gt;
I updated the script just a tad bit.  Using the magic of sed, this version of the script makes a backup of each database individually when you choose to backup all of your databases.  The previous version dumped all of the databases into a single file.  When you run this script and have it emailed to you, you&#039;ll end up with multiple attachments, each attachment being a single database name.  Why did I do this?  Well, I myself needed to restore a database and I had all the databases in a single file.  I ended up searching throughout the file to find where surrounding databases started or stopped and copied the info in between.  It wasn&#039;t very fun, especially since the databases weren&#039;t very small.  This script gets around that headache completely.  If you still prefer to have all of your DB data dumped into a single file, search for &amp;quot;MySQL Backup to FTP and Email Shell Script for Cron v2&amp;quot;.  Both scripts are exactly the same besides this feature.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;bb-code-title&quot;&gt;CODE:&lt;/div&gt;&lt;div class=&quot;bb-code&quot;&gt;#!&amp;#160;/bin/bash&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;Ameir&amp;#160;Abdeldayem&lt;br /&gt;
#&amp;#160;http&amp;#58;//www.ameir.net&lt;br /&gt;
#&amp;#160;You&amp;#160;are&amp;#160;free&amp;#160;to&amp;#160;modify&amp;#160;and&amp;#160;distribute&amp;#160;this&amp;#160;code,&lt;br /&gt;
#&amp;#160;so&amp;#160;long&amp;#160;as&amp;#160;you&amp;#160;keep&amp;#160;my&amp;#160;name&amp;#160;and&amp;#160;URL&amp;#160;in&amp;#160;it.&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;your&amp;#160;MySQL&amp;#160;server&#039;s&amp;#160;name&lt;br /&gt;
SERVER=ameir.net&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;directory&amp;#160;to&amp;#160;backup&amp;#160;to&lt;br /&gt;
BACKDIR=~/backups&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;date&amp;#160;format&amp;#160;that&amp;#160;is&amp;#160;appended&amp;#160;to&amp;#160;filename&lt;br /&gt;
DATE=`date&amp;#160;+&#039;%m-%d-%Y&#039;`&lt;br /&gt;
&lt;br /&gt;
#----------------------MySQL&amp;#160;Settings--------------------#&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;your&amp;#160;MySQL&amp;#160;server&#039;s&amp;#160;location&amp;#160;&amp;#40;IP&amp;#160;address&amp;#160;is&amp;#160;best&amp;#41;&lt;br /&gt;
HOST=localhost&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;MySQL&amp;#160;username&lt;br /&gt;
USER=username&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;MySQL&amp;#160;password&lt;br /&gt;
PASS=password&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;List&amp;#160;all&amp;#160;of&amp;#160;the&amp;#160;MySQL&amp;#160;databases&amp;#160;that&amp;#160;you&amp;#160;want&amp;#160;to&amp;#160;backup&amp;#160;in&amp;#160;here,&amp;#160;&lt;br /&gt;
#&amp;#160;each&amp;#160;separated&amp;#160;by&amp;#160;a&amp;#160;space&lt;br /&gt;
DBS=&quot;db1&amp;#160;db2&quot;&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;set&amp;#160;to&amp;#160;&#039;y&#039;&amp;#160;if&amp;#160;you&amp;#160;want&amp;#160;to&amp;#160;backup&amp;#160;all&amp;#160;your&amp;#160;databases.&amp;#160;this&amp;#160;will&amp;#160;override&lt;br /&gt;
#&amp;#160;the&amp;#160;database&amp;#160;selection&amp;#160;above.&lt;br /&gt;
DUMPALL=y&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#----------------------Mail&amp;#160;Settings--------------------#&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;set&amp;#160;to&amp;#160;&#039;y&#039;&amp;#160;if&amp;#160;you&#039;d&amp;#160;like&amp;#160;to&amp;#160;be&amp;#160;emailed&amp;#160;the&amp;#160;backup&amp;#160;&amp;#40;requires&amp;#160;mutt&amp;#41;&lt;br /&gt;
MAIL=y&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;email&amp;#160;addresses&amp;#160;to&amp;#160;send&amp;#160;backups&amp;#160;to,&amp;#160;separated&amp;#160;by&amp;#160;a&amp;#160;space&lt;br /&gt;
EMAILS=&quot;1@gmail.com&amp;#160;2@inbox.com&amp;#160;3@goowy.com&quot;&lt;br /&gt;
&lt;br /&gt;
SUBJECT=&quot;MySQL&amp;#160;backup&amp;#160;on&amp;#160;$SERVER&amp;#160;&amp;#40;$DATE&amp;#41;&quot;&lt;br /&gt;
&lt;br /&gt;
#----------------------FTP&amp;#160;Settings--------------------#&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;set&amp;#160;&quot;FTP=y&quot;&amp;#160;if&amp;#160;you&amp;#160;want&amp;#160;to&amp;#160;enable&amp;#160;FTP&amp;#160;backups&lt;br /&gt;
FTP=n&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;FTP&amp;#160;server&amp;#160;settings;&amp;#160;should&amp;#160;be&amp;#160;self-explanatory&lt;br /&gt;
FTPHOST=&quot;ftp.server.com&quot;&lt;br /&gt;
FTPUSER=&quot;username&quot;&lt;br /&gt;
FTPPASS=&quot;pass&quot;&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;directory&amp;#160;to&amp;#160;backup&amp;#160;to.&amp;#160;if&amp;#160;it&amp;#160;doesn&#039;t&amp;#160;exist,&amp;#160;file&amp;#160;will&amp;#160;be&amp;#160;uploaded&amp;#160;to&amp;#160;&lt;br /&gt;
#&amp;#160;first&amp;#160;logged-in&amp;#160;directory&lt;br /&gt;
FTPDIR=&quot;backups&quot;&lt;br /&gt;
&lt;br /&gt;
#-------------------Deletion&amp;#160;Settings-------------------#&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;delete&amp;#160;old&amp;#160;files?&lt;br /&gt;
DELETE=y&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;how&amp;#160;many&amp;#160;days&amp;#160;of&amp;#160;backups&amp;#160;do&amp;#160;you&amp;#160;want&amp;#160;to&amp;#160;keep?&lt;br /&gt;
DAYS=3&lt;br /&gt;
&lt;br /&gt;
#----------------------End&amp;#160;of&amp;#160;Settings------------------#&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;check&amp;#160;of&amp;#160;the&amp;#160;backup&amp;#160;directory&amp;#160;exists&lt;br /&gt;
#&amp;#160;if&amp;#160;not,&amp;#160;create&amp;#160;it&lt;br /&gt;
if&amp;#160;&amp;#160;&amp;#91;&amp;#160;-e&amp;#160;$BACKDIR&amp;#160;&amp;#93;&lt;br /&gt;
then&lt;br /&gt;
	echo&amp;#160;Backups&amp;#160;directory&amp;#160;already&amp;#160;exists&lt;br /&gt;
else&lt;br /&gt;
	mkdir&amp;#160;$BACKDIR&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if&amp;#160;&amp;#160;&amp;#91;&amp;#160;$DUMPALL&amp;#160;=&amp;#160;&quot;y&quot;&amp;#160;&amp;#93;&lt;br /&gt;
then&lt;br /&gt;
	echo&amp;#160;&quot;Creating&amp;#160;list&amp;#160;of&amp;#160;all&amp;#160;your&amp;#160;databases...&quot;&lt;br /&gt;
&lt;br /&gt;
	mysql&amp;#160;-h&amp;#160;$HOST&amp;#160;--user=$USER&amp;#160;--password=$PASS&amp;#160;-e&amp;#160;&quot;show&amp;#160;databases;&quot;&amp;#160;&amp;#62;&amp;#160;dbs_on_$SERVER.txt&lt;br /&gt;
&lt;br /&gt;
	#&amp;#160;redefine&amp;#160;list&amp;#160;of&amp;#160;databases&amp;#160;to&amp;#160;be&amp;#160;backed&amp;#160;up&lt;br /&gt;
	DBS=`sed&amp;#160;-e&amp;#160;&#039;&amp;#58;a;N;$!ba;s/\n/&amp;#160;/g&#039;&amp;#160;-e&amp;#160;&#039;s/Database&amp;#160;//g&#039;&amp;#160;dbs_on_$SERVER.txt`&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo&amp;#160;&quot;Backing&amp;#160;up&amp;#160;MySQL&amp;#160;databases...&quot;&lt;br /&gt;
for&amp;#160;database&amp;#160;in&amp;#160;$DBS&lt;br /&gt;
do&lt;br /&gt;
	mysqldump&amp;#160;-h&amp;#160;$HOST&amp;#160;--user=$USER&amp;#160;--password=$PASS&amp;#160;$database&amp;#160;&amp;#62;&amp;#160;\&lt;br /&gt;
$BACKDIR/$SERVER-mysqlbackup-$database-$DATE.sql&lt;br /&gt;
	gzip&amp;#160;-f&amp;#160;-9&amp;#160;$BACKDIR/$SERVER-mysqlbackup-$database-$DATE.sql&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;if&amp;#160;you&amp;#160;have&amp;#160;the&amp;#160;mail&amp;#160;program&amp;#160;&#039;mutt&#039;&amp;#160;installed&amp;#160;on&lt;br /&gt;
#&amp;#160;your&amp;#160;server,&amp;#160;this&amp;#160;script&amp;#160;will&amp;#160;have&amp;#160;mutt&amp;#160;attach&amp;#160;the&amp;#160;backup&lt;br /&gt;
#&amp;#160;and&amp;#160;send&amp;#160;it&amp;#160;to&amp;#160;the&amp;#160;email&amp;#160;addresses&amp;#160;in&amp;#160;$EMAILS&lt;br /&gt;
&lt;br /&gt;
if&amp;#160;&amp;#160;&amp;#91;&amp;#160;$MAIL&amp;#160;=&amp;#160;&quot;y&quot;&amp;#160;&amp;#93;&lt;br /&gt;
then&lt;br /&gt;
BODY=&quot;Your&amp;#160;backup&amp;#160;is&amp;#160;ready!&amp;#160;Find&amp;#160;more&amp;#160;useful&amp;#160;scripts&amp;#160;and&amp;#160;info&amp;#160;at&amp;#160;http&amp;#58;//www.ameir.net&quot;&lt;br /&gt;
ATTACH=`for&amp;#160;file&amp;#160;in&amp;#160;$BACKDIR/&amp;#42;$DATE.sql.gz;&amp;#160;do&amp;#160;echo&amp;#160;-n&amp;#160;&quot;-a&amp;#160;${file}&amp;#160;&quot;;&amp;#160;&amp;#160;done`&lt;br /&gt;
&lt;br /&gt;
	echo&amp;#160;&quot;$BODY&quot;&amp;#160;|&amp;#160;mutt&amp;#160;-s&amp;#160;&quot;$SUBJECT&quot;&amp;#160;$ATTACH&amp;#160;$EMAILS&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;br /&gt;
	echo&amp;#160;-e&amp;#160;&quot;Your&amp;#160;backup&amp;#160;has&amp;#160;been&amp;#160;emailed&amp;#160;to&amp;#160;you!&amp;#160;\n&quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if&amp;#160;&amp;#160;&amp;#91;&amp;#160;$FTP&amp;#160;=&amp;#160;&quot;y&quot;&amp;#160;&amp;#93;&lt;br /&gt;
then&lt;br /&gt;
echo&amp;#160;&quot;Initiating&amp;#160;FTP&amp;#160;connection...&quot;&lt;br /&gt;
cd&amp;#160;$BACKDIR&lt;br /&gt;
ATTACH=`for&amp;#160;file&amp;#160;in&amp;#160;&amp;#42;$DATE.sql.gz;&amp;#160;do&amp;#160;echo&amp;#160;-n&amp;#160;-e&amp;#160;&quot;put&amp;#160;${file}\n&quot;;&amp;#160;done`&lt;br /&gt;
&lt;br /&gt;
	ftp&amp;#160;-nv&amp;#160;&amp;#60;&amp;#60;EOF&lt;br /&gt;
	open&amp;#160;$FTPHOST&lt;br /&gt;
	user&amp;#160;$FTPUSER&amp;#160;$FTPPASS&lt;br /&gt;
	cd&amp;#160;$FTPDIR&lt;br /&gt;
	$ATTACH&lt;br /&gt;
	quit&lt;br /&gt;
EOF&lt;br /&gt;
echo&amp;#160;-e&amp;#160;&amp;#160;&quot;FTP&amp;#160;transfer&amp;#160;complete!&amp;#160;\n&quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if&amp;#160;&amp;#160;&amp;#91;&amp;#160;$DELETE&amp;#160;=&amp;#160;&quot;y&quot;&amp;#160;&amp;#93;&lt;br /&gt;
then&lt;br /&gt;
	find&amp;#160;$BACKDIR&amp;#160;-name&amp;#160;&quot;&amp;#42;.sql.gz&quot;&amp;#160;-mtime&amp;#160;$DAYS&amp;#160;-exec&amp;#160;rm&amp;#160;{}&amp;#160;\;&lt;br /&gt;
&lt;br /&gt;
	if&amp;#160;&amp;#160;&amp;#91;&amp;#160;$DAYS&amp;#160;=&amp;#160;&quot;1&quot;&amp;#160;&amp;#93;&lt;br /&gt;
	then&lt;br /&gt;
		echo&amp;#160;&quot;Yesterday&#039;s&amp;#160;backup&amp;#160;has&amp;#160;been&amp;#160;deleted.&quot;&lt;br /&gt;
	else&lt;br /&gt;
		echo&amp;#160;&quot;The&amp;#160;backup&amp;#160;from&amp;#160;$DAYS&amp;#160;days&amp;#160;ago&amp;#160;has&amp;#160;been&amp;#160;deleted.&quot;&lt;br /&gt;
	fi&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo&amp;#160;Your&amp;#160;backup&amp;#160;is&amp;#160;complete!&lt;/div&gt;&lt;br /&gt;
&lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/download/files/backupmysql-2.sh&#039;]);&quot;  title=&quot;backupmysql-2.sh&quot; href=&quot;http://www.ameir.net/files/backupmysql-2.sh&quot;&gt;Download backupmysql-2.sh&lt;/a&gt; 
    </content:encoded>

    <pubDate>Sat, 23 Sep 2006 16:15:42 -0500</pubDate>
    <guid isPermaLink="false">http://www.ameir.net/blog/archives/18-guid.html</guid>
    
</item>
<item>
    <title>LDAP Authentication PAM/NSS Using Debian or Ubuntu Bash Script v2</title>
    <link>http://www.ameir.net/blog/archives/17-LDAP-Authentication-PAMNSS-Using-Debian-or-Ubuntu-Bash-Script-v2.html</link>
            <category>Linux Luvin'</category>
    
    <comments>http://www.ameir.net/blog/archives/17-LDAP-Authentication-PAMNSS-Using-Debian-or-Ubuntu-Bash-Script-v2.html#comments</comments>
    <wfw:comment>http://www.ameir.net/blog/wfwcomment.php?cid=17</wfw:comment>

    <slash:comments>3</slash:comments>
    <wfw:commentRss>http://www.ameir.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=17</wfw:commentRss>
    

    <author>nospam@example.com (Ameir Abdeldayem)</author>
    <content:encoded>
    Okay, so the old script wasn&#039;t that great (well I don&#039;t think so), mainly because of how I dealt with nsswitch.conf.  I had the old script download it from the internet.  Sure, it worked for me when I made the script, but that method can lead to many problems, especially when servers go down (which did happen).  With the help of God I discovered sed.  It&#039;s like find/replace, but even better.  It has features dripping out of places I&#039;d rather not see.  Well anyways, the script is below.  I also added a function to see if you were root or not.  When I ran the old script on DreamLinux as root, it made new files in the pam.d directory, but they were all empty!  The new method hit the spot right.  Let me know if it works for you or not &lt;img src=&quot;http://www.ameir.net/blog/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;bb-code-title&quot;&gt;CODE:&lt;/div&gt;&lt;div class=&quot;bb-code&quot;&gt;#!&amp;#160;/bin/bash&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;This&amp;#160;script&amp;#160;will&amp;#160;install&amp;#160;an&amp;#160;LDAP&amp;#160;authentication&amp;#160;client&amp;#160;for&amp;#160;&lt;br /&gt;
#&amp;#160;Debian-based&amp;#160;systems.&amp;#160;&amp;#160;It&amp;#160;relies&amp;#160;on&amp;#160;apt-get&amp;#160;for&amp;#160;package&lt;br /&gt;
#&amp;#160;installation.&amp;#160;&amp;#160;If&amp;#160;you&amp;#160;are&amp;#160;using&amp;#160;Ubuntu&amp;#160;or&amp;#160;Mepis,&amp;#160;make&amp;#160;sure&lt;br /&gt;
#&amp;#160;you&amp;#160;have&amp;#160;the&amp;#160;&#039;universe&quot;&amp;#160;repository&amp;#160;enabled.&amp;#160;&amp;#160;The&amp;#160;packages&amp;#160;we&lt;br /&gt;
#&amp;#160;need&amp;#160;are&amp;#160;in&amp;#160;there.&lt;br /&gt;
#&lt;br /&gt;
#&amp;#160;Suppose&amp;#160;the&amp;#160;script&#039;s&amp;#160;filename&amp;#160;is&amp;#160;ldapconf.sh&lt;br /&gt;
#&amp;#160;If&amp;#160;you&amp;#160;are&amp;#160;running&amp;#160;it&amp;#160;as&amp;#160;a&amp;#160;sudo&amp;#160;user,&amp;#160;type&amp;#58;&lt;br /&gt;
#&amp;#160;chmod&amp;#160;+x&amp;#160;filename&amp;#160;&amp;amp;&amp;amp;&amp;#160;sudo&amp;#160;./ldapconf.sh&lt;br /&gt;
#&lt;br /&gt;
#&amp;#160;If&amp;#160;you&amp;#160;are&amp;#160;root,&amp;#160;run&amp;#160;it&amp;#160;as&amp;#58;&lt;br /&gt;
#&amp;#160;chmod&amp;#160;+x&amp;#160;filename&amp;#160;&amp;amp;&amp;amp;&amp;#160;./ldapconf.sh&lt;br /&gt;
#&lt;br /&gt;
#&amp;#160;Feel&amp;#160;free&amp;#160;to&amp;#160;modify&amp;#160;and&amp;#160;distribute&amp;#160;this&amp;#160;file&amp;#160;freely,&amp;#160;so&amp;#160;long&lt;br /&gt;
#&amp;#160;as&amp;#160;you&amp;#160;leave&amp;#160;the&amp;#160;author&#039;s&amp;#160;name&amp;#160;and&amp;#160;URL&amp;#160;intact.&lt;br /&gt;
#&lt;br /&gt;
#&amp;#160;Â©&amp;#160;Ameir&amp;#160;Abdeldayem&lt;br /&gt;
#&amp;#160;http&amp;#58;//www.ameir.net&lt;br /&gt;
#&amp;#160;Last&amp;#160;modified&amp;#58;&amp;#160;September&amp;#160;1,&amp;#160;2006&lt;br /&gt;
#---------------------------------------------------------------#&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DATE=`date&amp;#160;+&#039;%m-%d-%Y-%T&#039;`&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;check&amp;#160;if&amp;#160;root,&amp;#160;else&amp;#160;run&amp;#160;as&amp;#160;sudo&amp;#160;user&lt;br /&gt;
function&amp;#160;root&lt;br /&gt;
{&lt;br /&gt;
if&amp;#160;&amp;#91;&amp;#160;$&amp;#40;whoami&amp;#41;&amp;#160;=&amp;#160;&quot;root&quot;&amp;#160;&amp;#93;&lt;br /&gt;
then&lt;br /&gt;
&amp;#160;&amp;#160;echo&amp;#160;-n&lt;br /&gt;
else&lt;br /&gt;
&amp;#160;&amp;#160;echo&amp;#160;-n&amp;#160;&quot;sudo&amp;#160;&quot;&lt;br /&gt;
fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$&amp;#40;root&amp;#41;&amp;#160;apt-get&amp;#160;install&amp;#160;libpam-ldap&amp;#160;libnss-ldap&amp;#160;ldap-utils&amp;#160;nscd&lt;br /&gt;
&lt;br /&gt;
echo&amp;#160;&quot;Backing&amp;#160;up&amp;#160;and&amp;#160;modifying&amp;#160;files&amp;#160;in&amp;#160;pam.d/&amp;#160;...&quot;&lt;br /&gt;
$&amp;#40;root&amp;#41;&amp;#160;mv&amp;#160;/etc/pam.d/common-account&amp;#160;/etc/pam.d/common-account.$DATE.bak&lt;br /&gt;
$&amp;#40;root&amp;#41;&amp;#160;echo&amp;#160;account&amp;#160;sufficient&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;pam_ldap.so&amp;#160;&amp;#62;&amp;#62;&amp;#160;/etc/pam.d/common-account&lt;br /&gt;
$&amp;#40;root&amp;#41;&amp;#160;echo&amp;#160;account&amp;#160;required&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;pam_unix.so&amp;#160;try_first_pass&amp;#160;&amp;#62;&amp;#62;&amp;#160;/etc/pam.d/common-account&lt;br /&gt;
&lt;br /&gt;
$&amp;#40;root&amp;#41;&amp;#160;mv&amp;#160;/etc/pam.d/common-auth&amp;#160;/etc/pam.d/common-auth.$DATE.bak&lt;br /&gt;
$&amp;#40;root&amp;#41;&amp;#160;echo&amp;#160;auth&amp;#160;&amp;#160;&amp;#160;&amp;#160;sufficient&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;pam_ldap.so&amp;#160;&amp;#62;&amp;#62;&amp;#160;/etc/pam.d/common-auth&lt;br /&gt;
$&amp;#40;root&amp;#41;&amp;#160;echo&amp;#160;auth&amp;#160;&amp;#160;&amp;#160;&amp;#160;required&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;pam_unix.so&amp;#160;try_first_pass&amp;#160;&amp;#62;&amp;#62;&amp;#160;/etc/pam.d/common-auth&lt;br /&gt;
&lt;br /&gt;
$&amp;#40;root&amp;#41;&amp;#160;mv&amp;#160;/etc/pam.d/common-password&amp;#160;/etc/pam.d/common-password.$DATE.bak&lt;br /&gt;
$&amp;#40;root&amp;#41;&amp;#160;echo&amp;#160;password&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;sufficient&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;pam_ldap.so&amp;#160;&amp;#62;&amp;#62;&amp;#160;/etc/pam.d/common-password&lt;br /&gt;
$&amp;#40;root&amp;#41;&amp;#160;echo&amp;#160;password&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;required&amp;#160;&amp;#160;&amp;#160;pam_unix.so&amp;#160;nullok&amp;#160;obscure&amp;#160;min=4&amp;#160;max=8&amp;#160;md5&amp;#160;\&lt;br /&gt;
try_first_pass&amp;#160;&amp;#62;&amp;#62;&amp;#160;/etc/pam.d/common-password&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;changes&amp;#160;in&amp;#160;common-session&amp;#160;shouldn&#039;t&amp;#160;be&amp;#160;needed,&amp;#160;but&amp;#160;if&amp;#160;so&amp;#160;uncomment&amp;#160;and&amp;#160;&amp;#40;re&amp;#41;run&lt;br /&gt;
#&amp;#160;$&amp;#40;root&amp;#41;&amp;#160;mv&amp;#160;/etc/pam.d/common-session&amp;#160;/etc/pam.d/common-session.$DATE.bak&lt;br /&gt;
#&amp;#160;$&amp;#40;root&amp;#41;&amp;#160;echo&amp;#160;session&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;sufficient&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;pam_ldap.so&amp;#160;&amp;#62;&amp;#62;&amp;#160;/etc/pam.d/common-session&lt;br /&gt;
#&amp;#160;$&amp;#40;root&amp;#41;&amp;#160;echo&amp;#160;session&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;required&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;pam_unix.so&amp;#160;&amp;#62;&amp;#62;&amp;#160;/etc/pam.d/common-session&lt;br /&gt;
&lt;br /&gt;
$&amp;#40;root&amp;#41;&amp;#160;cp&amp;#160;/etc/nsswitch.conf&amp;#160;/etc/nsswitch.conf.$DATE.bak&lt;br /&gt;
$&amp;#40;root&amp;#41;&amp;#160;cp&amp;#160;/etc/nsswitch.conf&amp;#160;/etc/nsswitch.conf.bak&lt;br /&gt;
&lt;br /&gt;
echo&amp;#160;&quot;Editing&amp;#160;your&amp;#160;nsswitch.conf&amp;#160;file...&quot;&lt;br /&gt;
$&amp;#40;root&amp;#41;&amp;#160;sed&amp;#160;-e&amp;#160;&#039;s/compat/ldap&amp;#160;files/g&#039;&amp;#160;/etc/nsswitch.conf.bak&amp;#160;&amp;#62;&amp;#160;/etc/nsswitch.conf&lt;br /&gt;
&lt;br /&gt;
echo&amp;#160;-e&amp;#160;&quot;Finished&amp;#160;installing&amp;#160;packages&amp;#160;and&amp;#160;modifying&amp;#160;configuration&amp;#160;files!&amp;#160;\n&quot;&lt;br /&gt;
&lt;br /&gt;
echo&amp;#160;-e&amp;#160;&quot;NOTES&amp;#58;\nYou&amp;#160;may&amp;#160;need&amp;#160;to&amp;#160;restart&amp;#160;your&amp;#160;computer&amp;#160;before&amp;#160;changes&amp;#160;take&amp;#160;effect.&quot;&lt;br /&gt;
echo&amp;#160;&quot;You&amp;#160;can&amp;#160;restart&amp;#160;your&amp;#160;computer&amp;#160;by&amp;#160;typing&amp;#160;&#039;$&amp;#40;root&amp;#41;reboot&#039;&amp;#160;in&amp;#160;this&amp;#160;very&amp;#160;same&amp;#160;window.&quot;&lt;br /&gt;
echo&amp;#160;&quot;If&amp;#160;you&amp;#160;are&amp;#160;trying&amp;#160;to&amp;#160;login&amp;#160;as&amp;#160;a&amp;#160;user&amp;#160;that&amp;#160;is&amp;#160;local&amp;#160;AND&amp;#160;in&amp;#160;LDAP&amp;#160;and&amp;#160;are&amp;#160;getting\&lt;br /&gt;
&amp;#160;permission&amp;#160;errors,&amp;#160;type&amp;#160;&amp;#40;write&amp;#160;this&amp;#160;down&amp;#41;&amp;#160;&#039;$&amp;#40;root&amp;#41;nscd&amp;#160;--invalidate=passwd&#039;&amp;#160;in&amp;#160;a&amp;#160;terminal.&quot;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/download/files/ldapconf.sh&#039;]);&quot;  href=&quot;http://www.ameir.net/files/ldapconf.sh&quot;  title=&quot;ldapconf.sh&quot;&gt;Download ldapconf.sh&lt;/a&gt; 
    </content:encoded>

    <pubDate>Sat, 02 Sep 2006 02:06:51 -0500</pubDate>
    <guid isPermaLink="false">http://www.ameir.net/blog/archives/17-guid.html</guid>
    
</item>
<item>
    <title>Backup Scripts- README</title>
    <link>http://www.ameir.net/blog/archives/16-Backup-Scripts-README.html</link>
            <category>Linux Luvin'</category>
    
    <comments>http://www.ameir.net/blog/archives/16-Backup-Scripts-README.html#comments</comments>
    <wfw:comment>http://www.ameir.net/blog/wfwcomment.php?cid=16</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.ameir.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=16</wfw:commentRss>
    

    <author>nospam@example.com (Ameir Abdeldayem)</author>
    <content:encoded>
    If you are using any of the backup scripts on my site, it is useful to know a few things to get them up and running, and to keep existing things on your server sane.&lt;br /&gt;
&lt;br /&gt;
These scripts can be used together; they are friendly to each other and do not mess with one another.  It is completely safe (and recommended) to have the same backup directory for all of the scripts.&lt;br /&gt;
&lt;br /&gt;
How to use the scripts:&lt;br /&gt;
&lt;br /&gt;
You can copy the code directly from the site and paste into a plain text editor.  Make sure the editor saves files as plain text; i.e. it does no word processing.  Save the file and upload it to your server (unless you&#039;re working on the server so you won&#039;t have to transfer anything), preferably in the root of your home directory (not a big deal, though).  It is a good idea to save each of the scripts with similar names like backupmysql.sh, backupldap.sh, etc.  &lt;br /&gt;
&lt;br /&gt;
File permissions:&lt;br /&gt;
Once the file is on the server, make it executable.  If you have ssh or other command-line access, type &lt;strong&gt;chmod +x [filename]&lt;/strong&gt;.  If you are using FTP, CHMOD the scripts to make them executable.&lt;br /&gt;
&lt;br /&gt;
Testing the script:&lt;br /&gt;
If you have ssh, you can test the script by going to the script&#039;s directory and  typing &lt;strong&gt;./backupmysql.sh&lt;/strong&gt; (or whatever the filename is).  If the script works with no problems, you can now move forward and create a cron job.&lt;br /&gt;
&lt;br /&gt;
Creating a cron job:&lt;br /&gt;
If you are using cPanel, the &#039;simple&#039; cron creation method is simple enough to run without explanation.  Just type the full script&#039;s path in the field and select the desired timings.&lt;br /&gt;
&lt;br /&gt;
If you are using the &#039;advanced&#039; method in cPanel or are entering the cron job using ssh, entering something like &lt;strong&gt;0 0 &lt;strong&gt; &lt;/strong&gt; * ~/backupmysql.sh&lt;/strong&gt; should do the trick (will run the script every midnight).  To edit your cron jobs in ssh, type &lt;strong&gt;crontab -e&lt;/strong&gt;, which will open an editor with your current cron jobs listed.  Update that file and save.&lt;br /&gt;
&lt;br /&gt;
If you get the error &lt;strong&gt;bad interpreter: No such file or directory&lt;/strong&gt;, then you probably saved the file in Windows and transferred it over to the server.  Windows, Linux, and Macs save files differently, so the shell script can&#039;t run unless it is Linux-ready.  cPanel is pretty good with this.  If you have access to cPanel, all you have to do is open the script in the filemanager and click &#039;save&#039;.  cPanel will save the file in the correct format.  If you don&#039;t have cPanel access, you can open the file in a text editor in ssh and save it.  &lt;br /&gt;
&lt;br /&gt;
[to be finished] 
    </content:encoded>

    <pubDate>Sun, 20 Aug 2006 06:24:09 -0500</pubDate>
    <guid isPermaLink="false">http://www.ameir.net/blog/archives/16-guid.html</guid>
    
</item>
<item>
    <title>Folder Backup to FTP and Email Shell Script for Cron v2</title>
    <link>http://www.ameir.net/blog/archives/15-Folder-Backup-to-FTP-and-Email-Shell-Script-for-Cron-v2.html</link>
            <category>Linux Luvin'</category>
    
    <comments>http://www.ameir.net/blog/archives/15-Folder-Backup-to-FTP-and-Email-Shell-Script-for-Cron-v2.html#comments</comments>
    <wfw:comment>http://www.ameir.net/blog/wfwcomment.php?cid=15</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.ameir.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=15</wfw:commentRss>
    

    <author>nospam@example.com (Ameir Abdeldayem)</author>
    <content:encoded>
    &lt;div class=&quot;bb-code-title&quot;&gt;CODE:&lt;/div&gt;&lt;div class=&quot;bb-code&quot;&gt;#!&amp;#160;/bin/bash&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;Ameir&amp;#160;Abdeldayem&lt;br /&gt;
#&amp;#160;http&amp;#58;//www.ameir.net&lt;br /&gt;
#&amp;#160;You&amp;#160;are&amp;#160;free&amp;#160;to&amp;#160;modify&amp;#160;and&amp;#160;distribute&amp;#160;this&amp;#160;code,&lt;br /&gt;
#&amp;#160;so&amp;#160;long&amp;#160;as&amp;#160;you&amp;#160;keep&amp;#160;my&amp;#160;name&amp;#160;and&amp;#160;URL&amp;#160;in&amp;#160;it.&lt;br /&gt;
#&amp;#160;Last&amp;#160;modified&amp;#58;&amp;#160;August&amp;#160;1,&amp;#160;2006&lt;br /&gt;
#-------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;your&amp;#160;server&#039;s&amp;#160;name&lt;br /&gt;
SERVER=ameir.net&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;directory&amp;#160;to&amp;#160;backup&amp;#160;to&lt;br /&gt;
BACKDIR=~/backups&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;date&amp;#160;format&amp;#160;that&amp;#160;is&amp;#160;appended&amp;#160;to&amp;#160;filename&lt;br /&gt;
DATE=`date&amp;#160;+&#039;%m-%d-%Y&#039;`&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;directories&amp;#160;to&amp;#160;backup,&amp;#160;separated&amp;#160;by&amp;#160;a&amp;#160;space&lt;br /&gt;
#&amp;#160;if&amp;#160;this&amp;#160;script&amp;#160;is&amp;#160;a&amp;#160;level&amp;#160;above&amp;#160;a&amp;#160;directory&amp;#160;you&amp;#160;want&amp;#160;to&amp;#160;backup,&lt;br /&gt;
#&amp;#160;you&amp;#160;can&amp;#160;simply&amp;#160;enter&amp;#160;its&amp;#160;name,&amp;#160;otherwise,&amp;#160;type&amp;#160;the&amp;#160;absolute&amp;#160;path,&amp;#160;&lt;br /&gt;
#&amp;#160;with&amp;#160;or&amp;#160;without&amp;#160;a&amp;#160;trailing&amp;#160;slash.&lt;br /&gt;
DIRS=&quot;/home/user/public_html&amp;#160;/home/user/directory2&quot;&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;set&amp;#160;to&amp;#160;&#039;y&#039;&amp;#160;if&amp;#160;you&amp;#160;want&amp;#160;to&amp;#160;backup&amp;#160;all&amp;#160;your&amp;#160;folders.&amp;#160;this&amp;#160;will&amp;#160;backup&lt;br /&gt;
#&amp;#160;all&amp;#160;files&amp;#160;and&amp;#160;folders&amp;#160;in&amp;#160;the&amp;#160;script&#039;s&amp;#160;parent&amp;#160;directory&lt;br /&gt;
BACKALL=n&lt;br /&gt;
&lt;br /&gt;
#----------------------Mail&amp;#160;Settings--------------------#&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;set&amp;#160;to&amp;#160;&#039;y&#039;&amp;#160;if&amp;#160;you&#039;d&amp;#160;like&amp;#160;to&amp;#160;be&amp;#160;emailed&amp;#160;the&amp;#160;backup&amp;#160;&amp;#40;requires&amp;#160;mutt&amp;#41;&lt;br /&gt;
MAIL=n&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;email&amp;#160;addresses&amp;#160;to&amp;#160;send&amp;#160;backups&amp;#160;to,&amp;#160;separated&amp;#160;by&amp;#160;a&amp;#160;space&lt;br /&gt;
EMAILS=&quot;user@gmail.com&amp;#160;user@inbox.com&amp;#160;user@goowy.com&quot;&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;email&amp;#160;subject&lt;br /&gt;
SUBJECT=&quot;Directory&amp;#160;Backup&amp;#160;on&amp;#160;$SERVER&amp;#160;&amp;#40;$DATE&amp;#41;&quot;&lt;br /&gt;
&lt;br /&gt;
#----------------------FTP&amp;#160;Settings--------------------#&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;set&amp;#160;&quot;FTP=y&quot;&amp;#160;if&amp;#160;you&amp;#160;want&amp;#160;to&amp;#160;enable&amp;#160;FTP&amp;#160;backups&lt;br /&gt;
FTP=y&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;FTP&amp;#160;server&amp;#160;settings;&amp;#160;should&amp;#160;be&amp;#160;self-explanatory&lt;br /&gt;
FTPHOST=&quot;ftp.server.com&quot;&lt;br /&gt;
FTPUSER=&quot;user&quot;&lt;br /&gt;
FTPPASS=&quot;password&quot;&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;directory&amp;#160;to&amp;#160;backup&amp;#160;to.&amp;#160;if&amp;#160;it&amp;#160;doesn&#039;t&amp;#160;exist,&amp;#160;file&amp;#160;will&amp;#160;be&amp;#160;uploaded&amp;#160;to&amp;#160;&lt;br /&gt;
#&amp;#160;first&amp;#160;logged-in&amp;#160;directory&lt;br /&gt;
FTPDIR=&quot;backups&quot;&lt;br /&gt;
&lt;br /&gt;
#-------------------Deletion&amp;#160;Settings-------------------#&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;delete&amp;#160;old&amp;#160;files?&lt;br /&gt;
DELETE=y&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;how&amp;#160;many&amp;#160;days&amp;#160;of&amp;#160;backups&amp;#160;do&amp;#160;you&amp;#160;want&amp;#160;to&amp;#160;keep?&lt;br /&gt;
DAYS=3&lt;br /&gt;
&lt;br /&gt;
#----------------------End&amp;#160;of&amp;#160;Settings------------------#&lt;br /&gt;
#&amp;#160;check&amp;#160;of&amp;#160;the&amp;#160;backup&amp;#160;directory&amp;#160;exists&lt;br /&gt;
#&amp;#160;if&amp;#160;not,&amp;#160;create&amp;#160;it&lt;br /&gt;
if&amp;#160;&amp;#160;&amp;#91;&amp;#160;-e&amp;#160;$BACKDIR&amp;#160;&amp;#93;&lt;br /&gt;
then&lt;br /&gt;
&amp;#160;echo&amp;#160;Backups&amp;#160;directory&amp;#160;already&amp;#160;exists&lt;br /&gt;
else&lt;br /&gt;
mkdir&amp;#160;$BACKDIR&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;This&amp;#160;is&amp;#160;a&amp;#160;list&amp;#160;of&amp;#160;folders&amp;#160;to&amp;#160;be&amp;#160;backed&amp;#160;up.&lt;br /&gt;
#&amp;#160;You&amp;#160;can&amp;#160;add&amp;#160;more&amp;#160;entries&amp;#160;if&amp;#160;you&amp;#160;want&amp;#160;more&lt;br /&gt;
#&amp;#160;directories&amp;#160;to&amp;#160;be&amp;#160;backed&amp;#160;up.&amp;#160;The&amp;#160;${PWD##&amp;#42;/}&lt;br /&gt;
#&amp;#160;from&amp;#160;the&amp;#160;first&amp;#160;entry&amp;#160;gets&amp;#160;the&amp;#160;base&amp;#160;name&amp;#160;from&lt;br /&gt;
#&amp;#160;the&amp;#160;current&amp;#160;directory&amp;#160;and&amp;#160;uses&amp;#160;it&amp;#160;in&amp;#160;the&amp;#160;filename.&lt;br /&gt;
#&amp;#160;Format&amp;#58;&amp;#160;zip&amp;#160;-9&amp;#160;-r&amp;#160;&amp;#40;where&amp;#160;to&amp;#160;save&amp;#41;&amp;#160;&amp;#40;what&amp;#160;to&amp;#160;backup&amp;#41;.&lt;br /&gt;
#&amp;#160;Be&amp;#160;sure&amp;#160;to&amp;#160;include&amp;#160;$BACKDIR/&amp;#160;in&amp;#160;the&amp;#160;beginning&lt;br /&gt;
#&amp;#160;so&amp;#160;that&amp;#160;the&amp;#160;file&amp;#160;is&amp;#160;saved&amp;#160;in&amp;#160;the&amp;#160;backup&amp;#160;directory.&lt;br /&gt;
&lt;br /&gt;
if&amp;#160;&amp;#160;&amp;#91;&amp;#160;$BACKALL&amp;#160;=&amp;#160;&quot;y&quot;&amp;#160;&amp;#93;&lt;br /&gt;
then&lt;br /&gt;
	echo&amp;#160;Backing&amp;#160;up&amp;#160;entire&amp;#160;parent&amp;#160;directory...&lt;br /&gt;
	zip&amp;#160;-9&amp;#160;-r&amp;#160;$BACKDIR/${PWD##&amp;#42;/}-backup-$SERVER-$DATE.zip&amp;#160;./&lt;br /&gt;
else&lt;br /&gt;
	echo&amp;#160;Backing&amp;#160;up&amp;#160;selected&amp;#160;directories...&lt;br /&gt;
	for&amp;#160;directory&amp;#160;in&amp;#160;$DIRS&lt;br /&gt;
	do&lt;br /&gt;
		DIR=`echo&amp;#160;$directory&amp;#160;|&amp;#160;&amp;#160;sed&amp;#160;-e&amp;#160;&#039;s/^\///g&#039;&amp;#160;&amp;#160;-e&amp;#160;&#039;s/\/$//g&#039;&amp;#160;\&lt;br /&gt;
			-e&amp;#160;&#039;s/~//g&#039;&amp;#160;-e&amp;#160;&#039;s/\.//g&#039;&amp;#160;-e&amp;#160;&#039;s/home\///g&#039;&amp;#160;-e&amp;#160;&#039;s/\//_/g&#039;`&lt;br /&gt;
		echo&amp;#160;Backing&amp;#160;up&amp;#160;folder&amp;#160;named&amp;#160;$directory&amp;#160;as&amp;#160;$DIR...&lt;br /&gt;
		zip&amp;#160;-9&amp;#160;-r&amp;#160;$BACKDIR/$DIR-backup-$SERVER-$DATE.zip&amp;#160;$directory&lt;br /&gt;
	done&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if&amp;#160;&amp;#160;&amp;#91;&amp;#160;$MAIL&amp;#160;=&amp;#160;&quot;y&quot;&amp;#160;&amp;#93;&lt;br /&gt;
then&lt;br /&gt;
BODY=&quot;Your&amp;#160;backup&amp;#160;is&amp;#160;ready!&amp;#160;Find&amp;#160;more&amp;#160;useful&amp;#160;scripts&amp;#160;and&amp;#160;info&amp;#160;at&amp;#160;http&amp;#58;//www.ameir.net&quot;&lt;br /&gt;
ATTACH=`for&amp;#160;file&amp;#160;in&amp;#160;$BACKDIR/&amp;#42;$DATE.zip;&amp;#160;do&amp;#160;echo&amp;#160;-n&amp;#160;&quot;-a&amp;#160;${file}&amp;#160;&quot;;&amp;#160;done`&lt;br /&gt;
&lt;br /&gt;
	echo&amp;#160;$BODY&amp;#160;|&amp;#160;mutt&amp;#160;-s&amp;#160;&quot;$SUBJECT&quot;&amp;#160;$ATTACH&amp;#160;$EMAILS&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;br /&gt;
	echo&amp;#160;&quot;Your&amp;#160;backup&amp;#160;has&amp;#160;been&amp;#160;emailed&amp;#160;to&amp;#160;you!&quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if&amp;#160;&amp;#160;&amp;#91;&amp;#160;$FTP&amp;#160;=&amp;#160;&quot;y&quot;&amp;#160;&amp;#93;&lt;br /&gt;
then&lt;br /&gt;
cd&amp;#160;$BACKDIR&lt;br /&gt;
ATTACH=`for&amp;#160;file&amp;#160;in&amp;#160;&amp;#42;$DATE.zip;&amp;#160;do&amp;#160;echo&amp;#160;-n&amp;#160;-e&amp;#160;&quot;put&amp;#160;${file}\n&quot;;&amp;#160;done`&lt;br /&gt;
&lt;br /&gt;
	ftp&amp;#160;-nv&amp;#160;&amp;#60;&amp;#60;EOF&lt;br /&gt;
	open&amp;#160;$FTPHOST&lt;br /&gt;
	user&amp;#160;$FTPUSER&amp;#160;$FTPPASS&lt;br /&gt;
	cd&amp;#160;$FTPDIR&lt;br /&gt;
	$ATTACH&lt;br /&gt;
	quit&lt;br /&gt;
EOF&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if&amp;#160;&amp;#160;&amp;#91;&amp;#160;$DELETE&amp;#160;=&amp;#160;&quot;y&quot;&amp;#160;&amp;#93;&lt;br /&gt;
then&lt;br /&gt;
	find&amp;#160;$BACKDIR&amp;#160;-name&amp;#160;&quot;&amp;#42;.zip&quot;&amp;#160;-mtime&amp;#160;$DAYS&amp;#160;-exec&amp;#160;rm&amp;#160;{}&amp;#160;\;&lt;br /&gt;
&lt;br /&gt;
	if&amp;#160;&amp;#160;&amp;#91;&amp;#160;$DAYS&amp;#160;=&amp;#160;&quot;1&quot;&amp;#160;&amp;#93;&lt;br /&gt;
	then&lt;br /&gt;
		echo&amp;#160;&quot;Yesterday&#039;s&amp;#160;backup&amp;#160;has&amp;#160;been&amp;#160;deleted&quot;&lt;br /&gt;
	else&lt;br /&gt;
		echo&amp;#160;&quot;The&amp;#160;backup&amp;#160;from&amp;#160;$DAYS&amp;#160;days&amp;#160;ago&amp;#160;has&amp;#160;been&amp;#160;deleted&quot;&lt;br /&gt;
	fi&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo&amp;#160;Your&amp;#160;backup&amp;#160;is&amp;#160;complete!&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/download/files/backupdir.sh&#039;]);&quot;  href=&quot;http://www.ameir.net/files/backupdir.sh&quot;  title=&quot;backupdir.sh&quot;&gt;Download backupdir.sh&lt;/a&gt; 
    </content:encoded>

    <pubDate>Tue, 01 Aug 2006 23:24:50 -0500</pubDate>
    <guid isPermaLink="false">http://www.ameir.net/blog/archives/15-guid.html</guid>
    
</item>
<item>
    <title>MySQL Backup to FTP and Email Shell Script for Cron v2</title>
    <link>http://www.ameir.net/blog/archives/14-MySQL-Backup-to-FTP-and-Email-Shell-Script-for-Cron-v2.html</link>
            <category>Linux Luvin'</category>
    
    <comments>http://www.ameir.net/blog/archives/14-MySQL-Backup-to-FTP-and-Email-Shell-Script-for-Cron-v2.html#comments</comments>
    <wfw:comment>http://www.ameir.net/blog/wfwcomment.php?cid=14</wfw:comment>

    <slash:comments>4</slash:comments>
    <wfw:commentRss>http://www.ameir.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=14</wfw:commentRss>
    

    <author>nospam@example.com (Ameir Abdeldayem)</author>
    <content:encoded>
    Added ability to FTP multiple database backups over to a remote server, as well as with email.  &lt;br /&gt;
&lt;div class=&quot;bb-code-title&quot;&gt;CODE:&lt;/div&gt;&lt;div class=&quot;bb-code&quot;&gt;#!&amp;#160;/bin/bash&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;Ameir&amp;#160;Abdeldayem&lt;br /&gt;
#&amp;#160;http&amp;#58;//www.ameir.net&lt;br /&gt;
#&amp;#160;You&amp;#160;are&amp;#160;free&amp;#160;to&amp;#160;modify&amp;#160;and&amp;#160;distribute&amp;#160;this&amp;#160;code,&lt;br /&gt;
#&amp;#160;so&amp;#160;long&amp;#160;as&amp;#160;you&amp;#160;keep&amp;#160;my&amp;#160;name&amp;#160;and&amp;#160;URL&amp;#160;in&amp;#160;it.&lt;br /&gt;
#&amp;#160;Last&amp;#160;modified&amp;#58;&amp;#160;August&amp;#160;1,&amp;#160;2006&lt;br /&gt;
#-------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;your&amp;#160;MySQL&amp;#160;server&#039;s&amp;#160;name&lt;br /&gt;
SERVER=ameir.net&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;directory&amp;#160;to&amp;#160;backup&amp;#160;to&lt;br /&gt;
BACKDIR=~/backups&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;date&amp;#160;format&amp;#160;that&amp;#160;is&amp;#160;appended&amp;#160;to&amp;#160;filename&lt;br /&gt;
DATE=`date&amp;#160;+&#039;%m-%d-%Y&#039;`&lt;br /&gt;
&lt;br /&gt;
#----------------------MySQL&amp;#160;Settings--------------------#&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;your&amp;#160;MySQL&amp;#160;server&#039;s&amp;#160;location&amp;#160;&amp;#40;IP&amp;#160;address&amp;#160;is&amp;#160;best&amp;#41;&lt;br /&gt;
HOST=localhost&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;MySQL&amp;#160;username&lt;br /&gt;
USER=username&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;MySQL&amp;#160;password&lt;br /&gt;
PASS=password&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;List&amp;#160;all&amp;#160;of&amp;#160;the&amp;#160;MySQL&amp;#160;databases&amp;#160;that&amp;#160;you&amp;#160;want&amp;#160;to&amp;#160;backup&amp;#160;in&amp;#160;here,&amp;#160;&lt;br /&gt;
#&amp;#160;each&amp;#160;seperated&amp;#160;by&amp;#160;a&amp;#160;space&lt;br /&gt;
DBS=&quot;db1&amp;#160;db2&quot;&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;set&amp;#160;to&amp;#160;&#039;y&#039;&amp;#160;if&amp;#160;you&amp;#160;want&amp;#160;to&amp;#160;backup&amp;#160;all&amp;#160;your&amp;#160;databases.&amp;#160;this&amp;#160;will&amp;#160;override&lt;br /&gt;
#&amp;#160;the&amp;#160;database&amp;#160;selection&amp;#160;above.&lt;br /&gt;
DUMPALL=y&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;MySQL&amp;#160;dump&amp;#160;options&lt;br /&gt;
OPTIONS=&quot;&amp;#160;--quick&amp;#160;--add-drop-table&amp;#160;--add-locks&amp;#160;--extended-insert&amp;#160;--lock-tables&quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#----------------------Mail&amp;#160;Settings--------------------#&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;set&amp;#160;to&amp;#160;&#039;y&#039;&amp;#160;if&amp;#160;you&#039;d&amp;#160;like&amp;#160;to&amp;#160;be&amp;#160;emailed&amp;#160;the&amp;#160;backup&amp;#160;&amp;#40;requires&amp;#160;mutt&amp;#41;&lt;br /&gt;
MAIL=y&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;email&amp;#160;addresses&amp;#160;to&amp;#160;send&amp;#160;backups&amp;#160;to,&amp;#160;separated&amp;#160;by&amp;#160;a&amp;#160;space&lt;br /&gt;
EMAILS=&quot;user@gmail.com&amp;#160;user@inbox.com&amp;#160;user@goowy.com&quot;&lt;br /&gt;
&lt;br /&gt;
SUBJECT=&quot;MySQL&amp;#160;backup&amp;#160;on&amp;#160;$SERVER&amp;#160;&amp;#40;$DATE&amp;#41;&quot;&lt;br /&gt;
&lt;br /&gt;
#----------------------FTP&amp;#160;Settings--------------------#&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;set&amp;#160;&quot;FTP=y&quot;&amp;#160;if&amp;#160;you&amp;#160;want&amp;#160;to&amp;#160;enable&amp;#160;FTP&amp;#160;backups&lt;br /&gt;
FTP=y&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;FTP&amp;#160;server&amp;#160;settings;&amp;#160;should&amp;#160;be&amp;#160;self-explanatory&lt;br /&gt;
FTPHOST=&quot;ftp.server.com&quot;&lt;br /&gt;
FTPUSER=&quot;user&quot;&lt;br /&gt;
FTPPASS=&quot;password&quot;&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;directory&amp;#160;to&amp;#160;backup&amp;#160;to.&amp;#160;if&amp;#160;it&amp;#160;doesn&#039;t&amp;#160;exist,&amp;#160;file&amp;#160;will&amp;#160;be&amp;#160;uploaded&amp;#160;to&amp;#160;&lt;br /&gt;
#&amp;#160;first&amp;#160;logged-in&amp;#160;directory&lt;br /&gt;
FTPDIR=&quot;backups&quot;&lt;br /&gt;
&lt;br /&gt;
#-------------------Deletion&amp;#160;Settings-------------------#&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;delete&amp;#160;old&amp;#160;files?&lt;br /&gt;
DELETE=y&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;how&amp;#160;many&amp;#160;days&amp;#160;of&amp;#160;backups&amp;#160;do&amp;#160;you&amp;#160;want&amp;#160;to&amp;#160;keep?&lt;br /&gt;
DAYS=5&lt;br /&gt;
&lt;br /&gt;
#----------------------End&amp;#160;of&amp;#160;Settings------------------#&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;check&amp;#160;of&amp;#160;the&amp;#160;backup&amp;#160;directory&amp;#160;exists&lt;br /&gt;
#&amp;#160;if&amp;#160;not,&amp;#160;create&amp;#160;it&lt;br /&gt;
if&amp;#160;&amp;#160;&amp;#91;&amp;#160;-e&amp;#160;$BACKDIR&amp;#160;&amp;#93;&lt;br /&gt;
then&lt;br /&gt;
	echo&amp;#160;Backups&amp;#160;directory&amp;#160;already&amp;#160;exists&lt;br /&gt;
else&lt;br /&gt;
	mkdir&amp;#160;$BACKDIR&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if&amp;#160;&amp;#160;&amp;#91;&amp;#160;$DUMPALL&amp;#160;=&amp;#160;&quot;y&quot;&amp;#160;&amp;#93;&lt;br /&gt;
then&lt;br /&gt;
	echo&amp;#160;Dumping&amp;#160;all&amp;#160;your&amp;#160;databases...&lt;br /&gt;
	mysqldump&amp;#160;-h&amp;#160;$HOST&amp;#160;--user=$USER&amp;#160;--password=$PASS&amp;#160;$OPTIONS&amp;#160;--all-databases&amp;#160;&amp;#62;&amp;#160;\&lt;br /&gt;
$BACKDIR/$SERVER-mysqlbackup-ALL-$DATE.sql&lt;br /&gt;
	gzip&amp;#160;-f&amp;#160;-9&amp;#160;$BACKDIR/$SERVER-mysqlbackup-ALL-$DATE.sql&lt;br /&gt;
else&lt;br /&gt;
	echo&amp;#160;Backing&amp;#160;up&amp;#160;MySQL&amp;#160;databases...&lt;br /&gt;
for&amp;#160;database&amp;#160;in&amp;#160;$DBS&lt;br /&gt;
do&lt;br /&gt;
	mysqldump&amp;#160;-h&amp;#160;$HOST&amp;#160;--user=$USER&amp;#160;--password=$PASS&amp;#160;$database&amp;#160;&amp;#62;&amp;#160;\&lt;br /&gt;
$BACKDIR/$SERVER-mysqlbackup-$database-$DATE.sql&lt;br /&gt;
	gzip&amp;#160;-f&amp;#160;-9&amp;#160;$BACKDIR/$SERVER-mysqlbackup-$database-$DATE.sql&lt;br /&gt;
done&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;if&amp;#160;you&amp;#160;have&amp;#160;the&amp;#160;mail&amp;#160;program&amp;#160;&#039;mutt&#039;&amp;#160;installed&amp;#160;on&lt;br /&gt;
#&amp;#160;your&amp;#160;server,&amp;#160;this&amp;#160;script&amp;#160;will&amp;#160;have&amp;#160;mutt&amp;#160;attach&amp;#160;the&amp;#160;backup&lt;br /&gt;
#&amp;#160;and&amp;#160;send&amp;#160;it&amp;#160;to&amp;#160;the&amp;#160;email&amp;#160;addresses&amp;#160;in&amp;#160;$EMAILS&lt;br /&gt;
&lt;br /&gt;
if&amp;#160;&amp;#160;&amp;#91;&amp;#160;$MAIL&amp;#160;=&amp;#160;&quot;y&quot;&amp;#160;&amp;#93;&lt;br /&gt;
then&lt;br /&gt;
BODY=&quot;Your&amp;#160;backup&amp;#160;is&amp;#160;ready!&amp;#160;Find&amp;#160;more&amp;#160;useful&amp;#160;scripts&amp;#160;and&amp;#160;info&amp;#160;at&amp;#160;http&amp;#58;//www.ameir.net&quot;&lt;br /&gt;
ATTACH=`for&amp;#160;file&amp;#160;in&amp;#160;$BACKDIR/&amp;#42;$DATE.sql.gz;&amp;#160;do&amp;#160;echo&amp;#160;-n&amp;#160;&quot;-a&amp;#160;${file}&amp;#160;&quot;;&amp;#160;&amp;#160;done`&lt;br /&gt;
&lt;br /&gt;
	echo&amp;#160;&quot;$BODY&quot;&amp;#160;|&amp;#160;mutt&amp;#160;-s&amp;#160;&quot;$SUBJECT&quot;&amp;#160;$ATTACH&amp;#160;$EMAILS&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;br /&gt;
	echo&amp;#160;&quot;Your&amp;#160;backup&amp;#160;has&amp;#160;been&amp;#160;emailed&amp;#160;to&amp;#160;you!&quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if&amp;#160;&amp;#160;&amp;#91;&amp;#160;$FTP&amp;#160;=&amp;#160;&quot;y&quot;&amp;#160;&amp;#93;&lt;br /&gt;
then&lt;br /&gt;
cd&amp;#160;$BACKDIR&lt;br /&gt;
ATTACH=`for&amp;#160;file&amp;#160;in&amp;#160;&amp;#42;$DATE.sql.gz;&amp;#160;do&amp;#160;echo&amp;#160;-n&amp;#160;-e&amp;#160;&quot;put&amp;#160;${file}\n&quot;;&amp;#160;done`&lt;br /&gt;
&lt;br /&gt;
	ftp&amp;#160;-nv&amp;#160;&amp;#60;&amp;#60;EOF&lt;br /&gt;
	open&amp;#160;$FTPHOST&lt;br /&gt;
	user&amp;#160;$FTPUSER&amp;#160;$FTPPASS&lt;br /&gt;
	cd&amp;#160;$FTPDIR&lt;br /&gt;
	$ATTACH&lt;br /&gt;
	quit&lt;br /&gt;
EOF&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if&amp;#160;&amp;#160;&amp;#91;&amp;#160;$DELETE&amp;#160;=&amp;#160;&quot;y&quot;&amp;#160;&amp;#93;&lt;br /&gt;
then&lt;br /&gt;
	find&amp;#160;$BACKDIR&amp;#160;-name&amp;#160;&quot;&amp;#42;.sql.gz&quot;&amp;#160;-mtime&amp;#160;$DAYS&amp;#160;-exec&amp;#160;rm&amp;#160;{}&amp;#160;\;&lt;br /&gt;
&lt;br /&gt;
	if&amp;#160;&amp;#160;&amp;#91;&amp;#160;$DAYS&amp;#160;=&amp;#160;&quot;1&quot;&amp;#160;&amp;#93;&lt;br /&gt;
	then&lt;br /&gt;
		echo&amp;#160;&quot;Yesterday&#039;s&amp;#160;backup&amp;#160;has&amp;#160;been&amp;#160;deleted&quot;&lt;br /&gt;
	else&lt;br /&gt;
		echo&amp;#160;&quot;The&amp;#160;backup&amp;#160;from&amp;#160;$DAYS&amp;#160;days&amp;#160;ago&amp;#160;has&amp;#160;been&amp;#160;deleted&quot;&lt;br /&gt;
	fi&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo&amp;#160;Your&amp;#160;backup&amp;#160;is&amp;#160;complete!&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/download/files/backupmysql.sh&#039;]);&quot;  href=&quot;http://www.ameir.net/files/backupmysql.sh&quot;  title=&quot;backupmysql.sh&quot;&gt;Download backupmysql.sh&lt;/a&gt; 
    </content:encoded>

    <pubDate>Tue, 01 Aug 2006 23:14:32 -0500</pubDate>
    <guid isPermaLink="false">http://www.ameir.net/blog/archives/14-guid.html</guid>
    
</item>
<item>
    <title>LDAP Backup to FTP and Email Shell Script for Cron v2</title>
    <link>http://www.ameir.net/blog/archives/13-LDAP-Backup-to-FTP-and-Email-Shell-Script-for-Cron-v2.html</link>
            <category>Linux Luvin'</category>
    
    <comments>http://www.ameir.net/blog/archives/13-LDAP-Backup-to-FTP-and-Email-Shell-Script-for-Cron-v2.html#comments</comments>
    <wfw:comment>http://www.ameir.net/blog/wfwcomment.php?cid=13</wfw:comment>

    <slash:comments>4</slash:comments>
    <wfw:commentRss>http://www.ameir.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=13</wfw:commentRss>
    

    <author>nospam@example.com (Ameir Abdeldayem)</author>
    <content:encoded>
    Added ability to FTP files to another server and to delete old backups from backup directory.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;bb-code-title&quot;&gt;CODE:&lt;/div&gt;&lt;div class=&quot;bb-code&quot;&gt;#!&amp;#160;/bin/bash&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;Ameir&amp;#160;Abdeldayem&lt;br /&gt;
#&amp;#160;http&amp;#58;//www.ameir.net&lt;br /&gt;
#&amp;#160;You&amp;#160;are&amp;#160;free&amp;#160;to&amp;#160;modify&amp;#160;and&amp;#160;distribute&amp;#160;this&amp;#160;code,&lt;br /&gt;
#&amp;#160;so&amp;#160;long&amp;#160;as&amp;#160;you&amp;#160;keep&amp;#160;my&amp;#160;name&amp;#160;and&amp;#160;URL&amp;#160;in&amp;#160;it.&lt;br /&gt;
#&amp;#160;Last&amp;#160;modified&amp;#58;&amp;#160;August&amp;#160;1,&amp;#160;2006&lt;br /&gt;
#-------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;directory&amp;#160;to&amp;#160;backup&amp;#160;to&lt;br /&gt;
BACKDIR=~/backups&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;your&amp;#160;LDAP&amp;#160;server&#039;s&amp;#160;name&lt;br /&gt;
SERVER=ameir.net&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;date&amp;#160;format&amp;#160;that&amp;#160;is&amp;#160;appended&amp;#160;to&amp;#160;filename&lt;br /&gt;
DATE=`date&amp;#160;+&#039;%m-%d-%Y&#039;`&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#----------------------Mail&amp;#160;Settings--------------------#&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;set&amp;#160;to&amp;#160;&#039;y&#039;&amp;#160;if&amp;#160;you&#039;d&amp;#160;like&amp;#160;to&amp;#160;be&amp;#160;emailed&amp;#160;the&amp;#160;backup&amp;#160;&amp;#40;requires&amp;#160;mutt&amp;#41;&lt;br /&gt;
MAIL=y&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;email&amp;#160;addresses&amp;#160;to&amp;#160;send&amp;#160;backups&amp;#160;to,&amp;#160;separated&amp;#160;by&amp;#160;a&amp;#160;space&lt;br /&gt;
EMAILS=&quot;user@gmail.com&amp;#160;user@inbox.com&amp;#160;user@walla.com&amp;#160;user@goowy.com&quot;&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;email&amp;#160;subject&lt;br /&gt;
SUBJECT=&quot;LDAP&amp;#160;Backup&amp;#160;on&amp;#160;$SERVER&amp;#160;&amp;#40;$DATE&amp;#41;&quot;&lt;br /&gt;
&lt;br /&gt;
#----------------------FTP&amp;#160;Settings--------------------#&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;set&amp;#160;&quot;FTP=y&quot;&amp;#160;if&amp;#160;you&amp;#160;want&amp;#160;to&amp;#160;enable&amp;#160;FTP&amp;#160;backups&lt;br /&gt;
FTP=y&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;FTP&amp;#160;server&amp;#160;settings;&amp;#160;should&amp;#160;be&amp;#160;self-explanatory&lt;br /&gt;
FTPHOST=&quot;ftp.server.com&quot;&lt;br /&gt;
FTPUSER=&quot;user&quot;&lt;br /&gt;
FTPPASS=&quot;password&quot;&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;directory&amp;#160;to&amp;#160;backup&amp;#160;to.&amp;#160;if&amp;#160;it&amp;#160;doesn&#039;t&amp;#160;exist,&amp;#160;file&amp;#160;will&amp;#160;be&amp;#160;uploaded&amp;#160;to&amp;#160;&lt;br /&gt;
#&amp;#160;first&amp;#160;logged-in&amp;#160;directory&lt;br /&gt;
FTPDIR=&quot;backups&quot;&lt;br /&gt;
&lt;br /&gt;
#-------------------Deletion&amp;#160;Settings-------------------#&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;delete&amp;#160;old&amp;#160;files?&lt;br /&gt;
DELETE=y&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;how&amp;#160;many&amp;#160;days&amp;#160;of&amp;#160;backups&amp;#160;do&amp;#160;you&amp;#160;want&amp;#160;to&amp;#160;keep?&lt;br /&gt;
DAYS=5&lt;br /&gt;
&lt;br /&gt;
#----------------------End&amp;#160;of&amp;#160;Settings------------------#&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;make&amp;#160;sure&amp;#160;script&amp;#160;is&amp;#160;run&amp;#160;as&amp;#160;root&lt;br /&gt;
if&amp;#160;&amp;#91;&amp;#160;$&amp;#40;whoami&amp;#41;&amp;#160;!=&amp;#160;&quot;root&quot;&amp;#160;&amp;#93;&lt;br /&gt;
then&lt;br /&gt;
&amp;#160;&amp;#160;echo&amp;#160;&quot;You&amp;#160;must&amp;#160;be&amp;#160;root&amp;#160;to&amp;#160;run&amp;#160;this&amp;#160;script.&quot;&lt;br /&gt;
&amp;#160;&amp;#160;exit&amp;#160;1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;check&amp;#160;of&amp;#160;the&amp;#160;backup&amp;#160;directory&amp;#160;exists&lt;br /&gt;
#&amp;#160;if&amp;#160;not,&amp;#160;create&amp;#160;it&lt;br /&gt;
if&amp;#160;&amp;#160;&amp;#91;&amp;#160;-e&amp;#160;$BACKDIR&amp;#160;&amp;#93;&lt;br /&gt;
then&lt;br /&gt;
&amp;#160;echo&amp;#160;Backups&amp;#160;directory&amp;#160;already&amp;#160;exists&lt;br /&gt;
else&lt;br /&gt;
mkdir&amp;#160;$BACKDIR&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo&amp;#160;Backing&amp;#160;up&amp;#160;LDAP&amp;#160;entries...&lt;br /&gt;
&lt;br /&gt;
slapcat&amp;#160;-l&amp;#160;$BACKDIR/$SERVER-ldapbackup-$DATE.ldif&lt;br /&gt;
&lt;br /&gt;
if&amp;#160;&amp;#160;&amp;#91;&amp;#160;$MAIL&amp;#160;=&amp;#160;&quot;y&quot;&amp;#160;&amp;#93;&lt;br /&gt;
then&lt;br /&gt;
BODY=&quot;Your&amp;#160;backup&amp;#160;is&amp;#160;ready!&amp;#160;Find&amp;#160;more&amp;#160;useful&amp;#160;scripts&amp;#160;and&amp;#160;info&amp;#160;at&amp;#160;http&amp;#58;//www.ameir.net&quot;&lt;br /&gt;
ATTACH=`for&amp;#160;file&amp;#160;in&amp;#160;$BACKDIR/&amp;#42;$DATE.ldif;&amp;#160;do&amp;#160;echo&amp;#160;-n&amp;#160;&quot;-a&amp;#160;${file}&amp;#160;&quot;;&amp;#160;&amp;#160;done`&lt;br /&gt;
&lt;br /&gt;
	echo&amp;#160;&quot;$BODY&quot;&amp;#160;|&amp;#160;mutt&amp;#160;-s&amp;#160;&quot;$SUBJECT&quot;&amp;#160;$ATTACH&amp;#160;$EMAILS&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;br /&gt;
	echo&amp;#160;&quot;Your&amp;#160;backup&amp;#160;has&amp;#160;been&amp;#160;emailed&amp;#160;to&amp;#160;you!&quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if&amp;#160;&amp;#160;&amp;#91;&amp;#160;$FTP&amp;#160;=&amp;#160;&quot;y&quot;&amp;#160;&amp;#93;&lt;br /&gt;
then&lt;br /&gt;
cd&amp;#160;$BACKDIR&lt;br /&gt;
ATTACH=`for&amp;#160;file&amp;#160;in&amp;#160;&amp;#42;$DATE.ldif;&amp;#160;do&amp;#160;echo&amp;#160;-n&amp;#160;-e&amp;#160;&quot;put&amp;#160;${file}\n&quot;;&amp;#160;done`&lt;br /&gt;
&lt;br /&gt;
	ftp&amp;#160;-nv&amp;#160;&amp;#60;&amp;#60;EOF&lt;br /&gt;
	open&amp;#160;$FTPHOST&lt;br /&gt;
	user&amp;#160;$FTPUSER&amp;#160;$FTPPASS&lt;br /&gt;
	cd&amp;#160;$FTPDIR&lt;br /&gt;
	$ATTACH&lt;br /&gt;
	quit&lt;br /&gt;
EOF&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if&amp;#160;&amp;#160;&amp;#91;&amp;#160;$DELETE&amp;#160;=&amp;#160;&quot;y&quot;&amp;#160;&amp;#93;&lt;br /&gt;
then&lt;br /&gt;
	find&amp;#160;$BACKDIR&amp;#160;-name&amp;#160;&quot;&amp;#42;.ldif&quot;&amp;#160;-mtime&amp;#160;$DAYS&amp;#160;-exec&amp;#160;rm&amp;#160;{}&amp;#160;\;&lt;br /&gt;
&lt;br /&gt;
	if&amp;#160;&amp;#160;&amp;#91;&amp;#160;$DAYS&amp;#160;=&amp;#160;&quot;1&quot;&amp;#160;&amp;#93;&lt;br /&gt;
	then&lt;br /&gt;
		echo&amp;#160;&quot;Yesterday&#039;s&amp;#160;backup&amp;#160;has&amp;#160;been&amp;#160;deleted&quot;&lt;br /&gt;
	else&lt;br /&gt;
		echo&amp;#160;&quot;The&amp;#160;backup&amp;#160;from&amp;#160;$DAYS&amp;#160;days&amp;#160;ago&amp;#160;has&amp;#160;been&amp;#160;deleted&quot;&lt;br /&gt;
	fi&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo&amp;#160;Your&amp;#160;backup&amp;#160;is&amp;#160;complete!&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/download/files/backupldap.sh&#039;]);&quot;  href=&quot;http://www.ameir.net/files/backupldap.sh&quot;  title=&quot;backupldap.sh&quot;&gt;Download backupldap.sh&lt;/a&gt; 
    </content:encoded>

    <pubDate>Tue, 01 Aug 2006 23:04:34 -0500</pubDate>
    <guid isPermaLink="false">http://www.ameir.net/blog/archives/13-guid.html</guid>
    
</item>
<item>
    <title>Updated Backup Scripts</title>
    <link>http://www.ameir.net/blog/archives/12-Updated-Backup-Scripts.html</link>
            <category>Linux Luvin'</category>
    
    <comments>http://www.ameir.net/blog/archives/12-Updated-Backup-Scripts.html#comments</comments>
    <wfw:comment>http://www.ameir.net/blog/wfwcomment.php?cid=12</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.ameir.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=12</wfw:commentRss>
    

    <author>nospam@example.com (Ameir Abdeldayem)</author>
    <content:encoded>
    I have updated the MySQL, LDAP, and directory backup scripts and added more features.  All of the scripts are able to email the backups, FTP them over to another server to a specified directory, and are able to delete old backups from the backup directory on the server (you can choose how many days of backups you want to keep).  All of the scripts are now also more customizable, where email addresses and other options are not hardcoded, but put into variable format for easy editing.  A couple of small bugs were also fixed, such as the emailing of multiple file attachments. 
    </content:encoded>

    <pubDate>Mon, 31 Jul 2006 17:08:17 -0500</pubDate>
    <guid isPermaLink="false">http://www.ameir.net/blog/archives/12-guid.html</guid>
    
</item>
<item>
    <title>Backing up MySQL databases easily with cron</title>
    <link>http://www.ameir.net/blog/archives/11-Backing-up-MySQL-databases-easily-with-cron.html</link>
            <category>Linux Luvin'</category>
    
    <comments>http://www.ameir.net/blog/archives/11-Backing-up-MySQL-databases-easily-with-cron.html#comments</comments>
    <wfw:comment>http://www.ameir.net/blog/wfwcomment.php?cid=11</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.ameir.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=11</wfw:commentRss>
    

    <author>nospam@example.com (Ameir Abdeldayem)</author>
    <content:encoded>
    &lt;div class=&quot;bb-code-title&quot;&gt;CODE:&lt;/div&gt;&lt;div class=&quot;bb-code&quot;&gt;#!&amp;#160;/bin/bash&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;Ameir&amp;#160;Abdeldayem&lt;br /&gt;
#&amp;#160;http&amp;#58;//www.ameir.net&lt;br /&gt;
#&amp;#160;You&amp;#160;are&amp;#160;free&amp;#160;to&amp;#160;modify&amp;#160;and&amp;#160;distribute&amp;#160;this&amp;#160;code,&lt;br /&gt;
#&amp;#160;so&amp;#160;long&amp;#160;as&amp;#160;you&amp;#160;keep&amp;#160;my&amp;#160;name&amp;#160;and&amp;#160;URL&amp;#160;in&amp;#160;it.&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;your&amp;#160;MySQL&amp;#160;server&#039;s&amp;#160;name&lt;br /&gt;
SERVER=abubakr&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;your&amp;#160;MySQL&amp;#160;server&#039;s&amp;#160;location&amp;#160;&amp;#40;IP&amp;#160;address&amp;#160;is&amp;#160;best&amp;#41;&lt;br /&gt;
HOST=localhost&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;MySQL&amp;#160;username&lt;br /&gt;
USER=root&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;MySQL&amp;#160;password&lt;br /&gt;
PASS=&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;List&amp;#160;all&amp;#160;of&amp;#160;the&amp;#160;MySQL&amp;#160;databases&amp;#160;that&amp;#160;you&amp;#160;want&amp;#160;to&amp;#160;backup&amp;#160;in&amp;#160;here,&amp;#160;&lt;br /&gt;
#&amp;#160;each&amp;#160;seperated&amp;#160;by&amp;#160;a&amp;#160;space&lt;br /&gt;
DBS=&quot;ameir&quot;&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;set&amp;#160;to&amp;#160;&#039;y&#039;&amp;#160;if&amp;#160;you&amp;#160;want&amp;#160;to&amp;#160;backup&amp;#160;all&amp;#160;your&amp;#160;databases.&amp;#160;this&amp;#160;will&amp;#160;override&lt;br /&gt;
#&amp;#160;the&amp;#160;database&amp;#160;selection&amp;#160;above.&lt;br /&gt;
DUMPALL=n&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;MySQL&amp;#160;dump&amp;#160;options&lt;br /&gt;
OPTIONS=&quot;&amp;#160;--quick&amp;#160;--add-drop-table&amp;#160;--add-locks&amp;#160;--extended-insert&amp;#160;--lock-tables&quot;&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;directory&amp;#160;to&amp;#160;backup&amp;#160;to&lt;br /&gt;
BACKDIR=~/backups&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;date&amp;#160;format&amp;#160;that&amp;#160;is&amp;#160;appended&amp;#160;to&amp;#160;filename&lt;br /&gt;
DATE=`date&amp;#160;+&#039;%m-%d-%Y&#039;`&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;set&amp;#160;to&amp;#160;&#039;y&#039;&amp;#160;if&amp;#160;you&#039;d&amp;#160;like&amp;#160;to&amp;#160;be&amp;#160;emailed&amp;#160;the&amp;#160;backup&amp;#160;&amp;#40;requires&amp;#160;mutt&amp;#41;&lt;br /&gt;
MAIL=y&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;email&amp;#160;addresses&amp;#160;to&amp;#160;send&amp;#160;backups&amp;#160;to,&amp;#160;separated&amp;#160;by&amp;#160;a&amp;#160;space&lt;br /&gt;
EMAILS=&quot;email@gmail.com&amp;#160;email@inbox.com&amp;#160;email@walla.com&amp;#160;email@goowy.com&quot;&lt;br /&gt;
&lt;br /&gt;
SUBJECT=&quot;MySQL&amp;#160;backup&amp;#160;on&amp;#160;$SERVER&amp;#160;&amp;#40;$DATE&amp;#41;&quot;&lt;br /&gt;
&lt;br /&gt;
#--------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;check&amp;#160;of&amp;#160;the&amp;#160;backup&amp;#160;directory&amp;#160;exists&lt;br /&gt;
#&amp;#160;if&amp;#160;not,&amp;#160;create&amp;#160;it&lt;br /&gt;
if&amp;#160;&amp;#160;&amp;#91;&amp;#160;-e&amp;#160;$BACKDIR&amp;#160;&amp;#93;&lt;br /&gt;
then&lt;br /&gt;
&amp;#160;echo&amp;#160;Backups&amp;#160;directory&amp;#160;already&amp;#160;exists&lt;br /&gt;
else&lt;br /&gt;
mkdir&amp;#160;$BACKDIR&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if&amp;#160;&amp;#160;&amp;#91;&amp;#160;$DUMPALL&amp;#160;=&amp;#160;&quot;y&quot;&amp;#160;&amp;#93;&lt;br /&gt;
then&lt;br /&gt;
	echo&amp;#160;Dumping&amp;#160;all&amp;#160;your&amp;#160;databases...&lt;br /&gt;
	mysqldump&amp;#160;-h&amp;#160;$HOST&amp;#160;--user=$USER&amp;#160;--password=$PASS&amp;#160;$OPTIONS&amp;#160;--all-databases&amp;#160;&amp;#62;&amp;#160;\&lt;br /&gt;
		$BACKDIR/$SERVER-mysqlbackup-ALL-$DATE.sql&lt;br /&gt;
	gzip&amp;#160;-f&amp;#160;-9&amp;#160;$BACKDIR/$SERVER-mysqlbackup-ALL-$DATE.sql&lt;br /&gt;
else&lt;br /&gt;
	echo&amp;#160;Backing&amp;#160;up&amp;#160;MySQL&amp;#160;databases...&lt;br /&gt;
	for&amp;#160;database&amp;#160;in&amp;#160;$DBS&lt;br /&gt;
	do&lt;br /&gt;
		mysqldump&amp;#160;-h&amp;#160;$HOST&amp;#160;--user=$USER&amp;#160;--password=$PASS&amp;#160;$database&amp;#160;&amp;#62;&amp;#160;\&lt;br /&gt;
			$BACKDIR/$SERVER-mysqlbackup-$database-$DATE.sql&lt;br /&gt;
		gzip&amp;#160;-f&amp;#160;-9&amp;#160;$BACKDIR/$SERVER-mysqlbackup-$database-$DATE.sql&lt;br /&gt;
	done&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;if&amp;#160;you&amp;#160;have&amp;#160;the&amp;#160;mail&amp;#160;program&amp;#160;&#039;mutt&#039;&amp;#160;installed&amp;#160;on&lt;br /&gt;
#&amp;#160;your&amp;#160;server,&amp;#160;this&amp;#160;script&amp;#160;will&amp;#160;have&amp;#160;mutt&amp;#160;attach&amp;#160;the&amp;#160;backup&lt;br /&gt;
#&amp;#160;and&amp;#160;send&amp;#160;it&amp;#160;to&amp;#160;the&amp;#160;email&amp;#160;addresses&amp;#160;in&amp;#160;$EMAILS&lt;br /&gt;
BODY=&quot;Your&amp;#160;backup&amp;#160;is&amp;#160;ready!&amp;#160;Find&amp;#160;more&amp;#160;useful&amp;#160;scripts&amp;#160;and&amp;#160;info&amp;#160;at&amp;#160;http&amp;#58;//www.ameir.net&quot;&lt;br /&gt;
if&amp;#160;&amp;#160;&amp;#91;&amp;#160;$MAIL&amp;#160;=&amp;#160;&quot;y&quot;&amp;#160;&amp;#93;&lt;br /&gt;
then&lt;br /&gt;
	echo&amp;#160;&quot;$BODY&quot;&amp;#160;|&amp;#160;mutt&amp;#160;-s&amp;#160;&quot;$SUBJECT&quot;&amp;#160;\&lt;br /&gt;
		-a&amp;#160;$BACKDIR/&amp;#42;$DATE.sql.gz&amp;#160;$EMAILS&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;br /&gt;
	echo&amp;#160;&quot;Your&amp;#160;backup&amp;#160;has&amp;#160;been&amp;#160;emailed&amp;#160;to&amp;#160;you!&quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo&amp;#160;Your&amp;#160;backup&amp;#160;is&amp;#160;complete!&lt;/div&gt; 
    </content:encoded>

    <pubDate>Wed, 26 Jul 2006 20:30:21 -0500</pubDate>
    <guid isPermaLink="false">http://www.ameir.net/blog/archives/11-guid.html</guid>
    
</item>
<item>
    <title>Cron LDAP Backup to File and Email</title>
    <link>http://www.ameir.net/blog/archives/9-Cron-LDAP-Backup-to-File-and-Email.html</link>
            <category>Linux Luvin'</category>
    
    <comments>http://www.ameir.net/blog/archives/9-Cron-LDAP-Backup-to-File-and-Email.html#comments</comments>
    <wfw:comment>http://www.ameir.net/blog/wfwcomment.php?cid=9</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.ameir.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=9</wfw:commentRss>
    

    <author>nospam@example.com (Ameir Abdeldayem)</author>
    <content:encoded>
    If you keep up with this site, you&#039;ll know that I lost my entire LDAP database once due to server errors from a power outage.  I made this script below to counter that.  This script must be run as root because the command &quot;slapcat&quot; won&#039;t work otherwise (AFAIK).  I created a cron job to run this script every night and email me the ldif dump.  This is where your unused Gmail account comes into play.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;bb-code-title&quot;&gt;CODE:&lt;/div&gt;&lt;div class=&quot;bb-code&quot;&gt;#!&amp;#160;/bin/bash&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;Ameir&amp;#160;Abdeldayem&lt;br /&gt;
#&amp;#160;http&amp;#58;//www.ameir.net&lt;br /&gt;
#&amp;#160;You&amp;#160;are&amp;#160;free&amp;#160;to&amp;#160;modify&amp;#160;and&amp;#160;distribute&amp;#160;this&amp;#160;code,&lt;br /&gt;
#&amp;#160;so&amp;#160;long&amp;#160;as&amp;#160;you&amp;#160;keep&amp;#160;my&amp;#160;name&amp;#160;and&amp;#160;URL&amp;#160;in&amp;#160;it.&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;directory&amp;#160;to&amp;#160;backup&amp;#160;to&lt;br /&gt;
BACKDIR=~/backups&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;your&amp;#160;LDAP&amp;#160;server&#039;s&amp;#160;name&lt;br /&gt;
SERVER=abubakr&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;date&amp;#160;format&amp;#160;that&amp;#160;is&amp;#160;appended&amp;#160;to&amp;#160;filename&lt;br /&gt;
DATE=`date&amp;#160;+&#039;%m-%d-%Y&#039;`&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;check&amp;#160;of&amp;#160;the&amp;#160;backup&amp;#160;directory&amp;#160;exists&lt;br /&gt;
#&amp;#160;if&amp;#160;not,&amp;#160;create&amp;#160;it&lt;br /&gt;
if&amp;#160;&amp;#160;&amp;#91;&amp;#160;-e&amp;#160;$BACKDIR&amp;#160;&amp;#93;&lt;br /&gt;
then&lt;br /&gt;
&amp;#160;echo&amp;#160;Backups&amp;#160;directory&amp;#160;already&amp;#160;exists&lt;br /&gt;
else&lt;br /&gt;
mkdir&amp;#160;$BACKDIR&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
echo&amp;#160;Backing&amp;#160;up&amp;#160;LDAP&amp;#160;entries...&lt;br /&gt;
&lt;br /&gt;
slapcat&amp;#160;-l&amp;#160;$BACKDIR/$SERVER-ldapbackup-$DATE.ldif&lt;br /&gt;
&lt;br /&gt;
#&amp;#160;if&amp;#160;you&amp;#160;have&amp;#160;the&amp;#160;mail&amp;#160;program&amp;#160;&#039;mutt&#039;&amp;#160;installed&amp;#160;on&lt;br /&gt;
#&amp;#160;your&amp;#160;server,&amp;#160;uncomment&amp;#160;this&amp;#160;line&amp;#160;to&amp;#160;have&amp;#160;the&amp;#160;ldif&lt;br /&gt;
#&amp;#160;dump&amp;#160;emailed&amp;#160;to&amp;#160;you&amp;#160;as&amp;#160;an&amp;#160;attachment.&amp;#160;&amp;#160;You&amp;#160;can&amp;#160;add&lt;br /&gt;
#&amp;#160;multiple&amp;#160;email&amp;#160;addresses&amp;#160;at&amp;#160;the&amp;#160;end&amp;#160;of&amp;#160;the&amp;#160;line&amp;#160;to&lt;br /&gt;
#&amp;#160;send&amp;#160;this&amp;#160;file&amp;#160;to&amp;#160;each&amp;#160;of&amp;#160;them.&lt;br /&gt;
echo&amp;#160;Your&amp;#160;backup&amp;#160;is&amp;#160;ready&amp;#160;|&amp;#160;mutt&amp;#160;-a&amp;#160;$BACKDIR/&amp;#42;$DATE.ldif&amp;#160;\&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;-s&amp;#160;&quot;LDAP&amp;#160;backup&amp;#160;on&amp;#160;$SERVER&amp;#160;&amp;#40;$DATE&amp;#41;&quot;&amp;#160;email1@server.com&amp;#160;\&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;email2@server.com&lt;br /&gt;
&lt;br /&gt;
echo&amp;#160;Your&amp;#160;backup&amp;#160;is&amp;#160;complete!&lt;/div&gt; 
    </content:encoded>

    <pubDate>Fri, 21 Jul 2006 10:54:08 -0500</pubDate>
    <guid isPermaLink="false">http://www.ameir.net/blog/archives/9-guid.html</guid>
    
</item>

</channel>
</rss>