<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Richard Pickett .com</title>
	<atom:link href="http://richardpickett.com/feed" rel="self" type="application/rss+xml" />
	<link>http://richardpickett.com</link>
	<description>Read at your own risk, I certainly posted it that way.</description>
	<lastBuildDate>Wed, 07 Dec 2011 22:06:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>&#8216;script&#8217;ing the login</title>
		<link>http://richardpickett.com/scripting-the-login#utm_source=feed&#038;utm_medium=feed&#038;utm_campaign=feed</link>
		<comments>http://richardpickett.com/scripting-the-login#comments</comments>
		<pubDate>Mon, 18 Jul 2011 21:53:32 +0000</pubDate>
		<dc:creator>rpickett</dc:creator>
				<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://www.richardpickett.com/?p=157</guid>
		<description><![CDATA[Ever want to capture and record everything done on the command line from a ssh login without (a) the user knowing it and (b) them having to do anything to start the recording? become root, then execute these commands: mkdir /var/log/script chmod 733 /var/log/script Then, for each user you want to record: echo -e '\n/usr/bin/script [...]]]></description>
			<content:encoded><![CDATA[<p>Ever want to capture and record everything done on the command line from a ssh login without (a) the user knowing it and (b) them having to do anything to start the recording?</p>
<p><span id="more-157"></span>become root, then execute these commands:</p>
<pre>mkdir /var/log/script</pre>
<pre>chmod 733 /var/log/script</pre>
<p>Then, for each user you want to record:</p>
<pre>echo -e '\n/usr/bin/script -aqf /var/log/script/$( date +%F-%H-%M-%S )-$( whoami ); exit' &gt; /home/&lt;user&gt;/.profile</pre>
<p><em>(You can also add that to the end of the /etc/skel/.profile so that all new accounts have that line.)</em></p>
<p>The recordings of their sessions will be in /var/log/script</p>
<p>Enjoy!</p>
<div class='gig-share-button gig-share-button-bottom' id='gig-div-buttons-157-bottom'></div><script language='javascript'>var conf_157 = {
							APIKey: '2_8tibyN5lCqkpvDrshuDBxNX_Vh5Elb7HGKUT9NIxqg5FJzCs31Q3CgWra3cSLBDA',
							lang  : '',
							enabledProviders: ''
    					};
						
    					var image157 = {src:'http://richardpickett.com/wp-includes/images/blank.gif',href:'http://richardpickett.com/scripting-the-login',type:'image'};
						var ua_157 = new gigya.services.socialize.UserAction(); 
						ua_157.setUserMessage('');  
						ua_157.setLinkBack('http://richardpickett.com/scripting-the-login'); 
						ua_157.setTitle('\'script\'ing the login');
						ua_157.addMediaItem(image157);	
		

						var params_157 ={ 
							userAction:ua_157,
							cssPrefix:'#gig-div-buttons-157-bottom',
							shareButtons:'facebook-like,google-plusone,share,twitter,email', // list of providers
							containerID: 'gig-div-buttons-157-bottom',
        					cid:''
						};
						gigya.services.socialize.showShareBarUI(conf_157,params_157);
					</script>
					]]></content:encoded>
			<wfw:commentRss>http://richardpickett.com/scripting-the-login/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Interesting Quotes</title>
		<link>http://richardpickett.com/interesting-quotes#utm_source=feed&#038;utm_medium=feed&#038;utm_campaign=feed</link>
		<comments>http://richardpickett.com/interesting-quotes#comments</comments>
		<pubDate>Sat, 09 Jul 2011 01:00:46 +0000</pubDate>
		<dc:creator>rpickett</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.richardpickett.com/?p=149</guid>
		<description><![CDATA[Just some quotes I wanted to jot down. &#8220;You need to relax.&#8221; &#8220;I&#8217;m more comfortable tense.&#8221; &#8220;We&#8217;re just trying to get to the truth&#8221; &#8220;I get it, but what you need to remember is there&#8217;s what people want to hear, there&#8217;s what people want to believe, there&#8217;s everything else, then there&#8217;s the truth.&#8221; &#8220;And since [...]]]></description>
			<content:encoded><![CDATA[<p>Just some quotes I wanted to jot down.</p>
<p><span id="more-149"></span>&#8220;You need to relax.&#8221;<br />
&#8220;I&#8217;m more comfortable tense.&#8221;</p>
<p>&#8220;We&#8217;re just trying to get to the truth&#8221;<br />
&#8220;I get it, but what you need to remember is there&#8217;s what people want to hear, there&#8217;s what people want to believe, there&#8217;s everything else, then there&#8217;s the truth.&#8221;<br />
&#8220;And since when is that ok? I can&#8217;t even believe you&#8217;re saying this to me. The truth means responsibility.&#8221;<br />
&#8220;Exactly, which is why everyone dreads it.&#8221;</p>
<p>&#8220;I don&#8217;t know why you pay me to advise you on these matters, It&#8217;s clear that you don&#8217;t want my counsel, only my corroboration.&#8221;<br />
&#8220;We&#8217;ve had about all we can take of you.&#8221;<br />
&#8220;Ah, yes. I&#8217;ve had about all I can take of myself.&#8221;</p>
<p>&#8220;What does one do when there&#8217;s no way out of a situation?&#8221;<br />
&#8220;If there&#8217;s no way out, the best thing is to find a way further in&#8221;</p>
<p>&#8220;You don&#8217;t look well today.&#8221;<br />
&#8220;We all start better than we end.&#8221;</p>
<p>&#8220;This is the difference between truth and fiction. Fiction has to make sense.&#8221;</p>
<p>&#8220;I was once destined to be a man much like yourself. True-hearted, determined, full of purpose. But character is easier kept than recovered.&#8221;</p>
<p>&#8220;We cannot control the things life does to us. They are done before you know it, and once they are done, they make you do other things until at last everything comes between you and the man you wanted to be.&#8221;</p>
<p>&#8220;Sometimes a man can meet destiny on the road he took to avoid it.&#8221;</p>
<p>&#8220;Sometimes in life the hardest thing to know is which bridge to cross and which to burn.&#8221;</p>
<p>&#8220;How can I trust you?&#8221;<br />
&#8220;It&#8217;s mutual interest, not trust, that will be the bond of our relationship&#8221;</p>
<p>&nbsp;</p>
<div class='gig-share-button gig-share-button-bottom' id='gig-div-buttons-149-bottom'></div><script language='javascript'>var conf_149 = {
							APIKey: '2_8tibyN5lCqkpvDrshuDBxNX_Vh5Elb7HGKUT9NIxqg5FJzCs31Q3CgWra3cSLBDA',
							lang  : '',
							enabledProviders: ''
    					};
						
    					var image149 = {src:'http://richardpickett.com/wp-includes/images/blank.gif',href:'http://richardpickett.com/interesting-quotes',type:'image'};
						var ua_149 = new gigya.services.socialize.UserAction(); 
						ua_149.setUserMessage('');  
						ua_149.setLinkBack('http://richardpickett.com/interesting-quotes'); 
						ua_149.setTitle('Interesting Quotes');
						ua_149.addMediaItem(image149);	
		

						var params_149 ={ 
							userAction:ua_149,
							cssPrefix:'#gig-div-buttons-149-bottom',
							shareButtons:'facebook-like,google-plusone,share,twitter,email', // list of providers
							containerID: 'gig-div-buttons-149-bottom',
        					cid:''
						};
						gigya.services.socialize.showShareBarUI(conf_149,params_149);
					</script>
					]]></content:encoded>
			<wfw:commentRss>http://richardpickett.com/interesting-quotes/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mysql Multi-Master</title>
		<link>http://richardpickett.com/mysql-multi-master#utm_source=feed&#038;utm_medium=feed&#038;utm_campaign=feed</link>
		<comments>http://richardpickett.com/mysql-multi-master#comments</comments>
		<pubDate>Sun, 08 May 2011 20:16:32 +0000</pubDate>
		<dc:creator>rpickett</dc:creator>
				<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://www.richardpickett.com/?p=140</guid>
		<description><![CDATA[My notes on what I did to create a mysql multi-master setup w/ newly-install mysql servers. On both servers: GRANT REPLICATION SLAVE ON *.* TO slave_user IDENTIFIED BY &#8216;********&#8217;; flush privileges; vim my.cnf and make the following changes: bind-address            = 0.0.0.0 # we have to allow outside connections, use firewall [...]]]></description>
			<content:encoded><![CDATA[<p>My notes on what I did to create a mysql multi-master setup w/ newly-install mysql servers.</p>
<p><span id="more-140"></span>On both servers:</p>
<p>GRANT REPLICATION SLAVE ON *.* TO slave_user IDENTIFIED BY &#8216;********&#8217;; flush privileges;</p>
<p>vim my.cnf and make the following changes:</p>
<p>bind-address            = 0.0.0.0 # we have to allow outside connections, use firewall to allow only the other server&#8217;s connections</p>
<p>Now, before proceeding, let&#8217;s check that each master can connect as the slave to the other master.</p>
<p>on both servers:<br />
# /etc/init.d/mysql restart</p>
<p># mysql -u slave_user -p -h XX.XX.XX.XX<br />
where XX.XX.XX.XX is the *other* mysql server&#8217;s IP.</p>
<p>If all goes well, proceed. Otherwise debug your connectivity issues (usually iptables or switch firewall).</p>
<p>vim my.cnf again and add these under the [mysqld] section:</p>
<p>server-id = 1  # each server gets it&#8217;s own id<br />
log-bin = /var/lib/mysql/bin.log<br />
log-slave-updates<br />
log-bin-index = /var/lib/mysql/bin-log.index<br />
relay-log = /var/lib/mysql/relay.log<br />
relay-log-info-file = /var/lib/mysql/relay-log.info<br />
relay-log-index = /var/lib/mysql/relay-log.index<br />
auto_increment_increment = 10 # this is the maximum number of servers you think you&#8217;ll ever have &#8211; set it to low and you&#8217;ll pay the price when you need more<br />
auto_increment_offset = 1 # the first server is 1, the next server is 2, etc<br />
master-host = XX.XX.XX.XX # the ip of the other master<br />
master-user = slave_user<br />
master-password = ********** # password used above<br />
slave_compressed_protocol=1 # might as well use compression on the transmission &#8211; esp if the servers are on separate networks</p>
<p>now, restart both servers. Once they are running use &#8216;show slave status;&#8217; to see if they are running correctly, if not, try &#8216;stop slave; reset slave; start slave;&#8217; on both to see if that helps them figure themselves out.</p>
<p>Once you see both slave_io_running and slave_sql_running are both yes, try created databases and dropping databases on both boxes and make sure the other sees the related change.</p>
<div class='gig-share-button gig-share-button-bottom' id='gig-div-buttons-140-bottom'></div><script language='javascript'>var conf_140 = {
							APIKey: '2_8tibyN5lCqkpvDrshuDBxNX_Vh5Elb7HGKUT9NIxqg5FJzCs31Q3CgWra3cSLBDA',
							lang  : '',
							enabledProviders: ''
    					};
						
    					var image140 = {src:'http://richardpickett.com/wp-includes/images/blank.gif',href:'http://richardpickett.com/mysql-multi-master',type:'image'};
						var ua_140 = new gigya.services.socialize.UserAction(); 
						ua_140.setUserMessage('');  
						ua_140.setLinkBack('http://richardpickett.com/mysql-multi-master'); 
						ua_140.setTitle('Mysql Multi-Master');
						ua_140.addMediaItem(image140);	
		

						var params_140 ={ 
							userAction:ua_140,
							cssPrefix:'#gig-div-buttons-140-bottom',
							shareButtons:'facebook-like,google-plusone,share,twitter,email', // list of providers
							containerID: 'gig-div-buttons-140-bottom',
        					cid:''
						};
						gigya.services.socialize.showShareBarUI(conf_140,params_140);
					</script>
					]]></content:encoded>
			<wfw:commentRss>http://richardpickett.com/mysql-multi-master/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Disable Auto-Open Of CD/DVD/USB in Ubuntu</title>
		<link>http://richardpickett.com/disable-auto-open-of-cddvdusb-in-ubuntu#utm_source=feed&#038;utm_medium=feed&#038;utm_campaign=feed</link>
		<comments>http://richardpickett.com/disable-auto-open-of-cddvdusb-in-ubuntu#comments</comments>
		<pubDate>Fri, 22 Apr 2011 21:42:42 +0000</pubDate>
		<dc:creator>rpickett</dc:creator>
				<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://www.richardpickett.com/?p=137</guid>
		<description><![CDATA[Tired of gnome auto-opening your CD/DVD/USB just because you stuck a new one in? (gets on my nerves because I use pam usb for authentication). gconf-editor Key: /apps/nautilus/preferences/media_automount_open ;-D]]></description>
			<content:encoded><![CDATA[<p>Tired of gnome auto-opening your CD/DVD/USB just because you stuck a new one in? (gets on my nerves because I use pam usb for authentication).</p>
<p><span id="more-137"></span></p>
<p><strong>gconf-editor</strong></p>
<p><strong>Key: /apps/nautilus/preferences/media_automount_open</strong></p>
<p>;-D</p>
<div class='gig-share-button gig-share-button-bottom' id='gig-div-buttons-137-bottom'></div><script language='javascript'>var conf_137 = {
							APIKey: '2_8tibyN5lCqkpvDrshuDBxNX_Vh5Elb7HGKUT9NIxqg5FJzCs31Q3CgWra3cSLBDA',
							lang  : '',
							enabledProviders: ''
    					};
						
    					var image137 = {src:'http://richardpickett.com/wp-includes/images/blank.gif',href:'http://richardpickett.com/disable-auto-open-of-cddvdusb-in-ubuntu',type:'image'};
						var ua_137 = new gigya.services.socialize.UserAction(); 
						ua_137.setUserMessage('');  
						ua_137.setLinkBack('http://richardpickett.com/disable-auto-open-of-cddvdusb-in-ubuntu'); 
						ua_137.setTitle('Disable Auto-Open Of CD/DVD/USB in Ubuntu');
						ua_137.addMediaItem(image137);	
		

						var params_137 ={ 
							userAction:ua_137,
							cssPrefix:'#gig-div-buttons-137-bottom',
							shareButtons:'facebook-like,google-plusone,share,twitter,email', // list of providers
							containerID: 'gig-div-buttons-137-bottom',
        					cid:''
						};
						gigya.services.socialize.showShareBarUI(conf_137,params_137);
					</script>
					]]></content:encoded>
			<wfw:commentRss>http://richardpickett.com/disable-auto-open-of-cddvdusb-in-ubuntu/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OCFS2 over iSCSI on Ubuntu 10.10 (Maverick Meerkat)</title>
		<link>http://richardpickett.com/ocfs2-over-iscsi-on-ubuntu-10-10-maverick-meerkat#utm_source=feed&#038;utm_medium=feed&#038;utm_campaign=feed</link>
		<comments>http://richardpickett.com/ocfs2-over-iscsi-on-ubuntu-10-10-maverick-meerkat#comments</comments>
		<pubDate>Fri, 25 Mar 2011 14:58:08 +0000</pubDate>
		<dc:creator>rpickett</dc:creator>
				<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://www.richardpickett.com/?p=129</guid>
		<description><![CDATA[I had a lot of fun figuring this out. I knew I needed OCFS2 for a clustering file system I was setting up, but none of the OCFS2 documentation tells you how to setup the underlying disk. DRBD has a &#8220;do DRBD first, then OCFS2 on top of that&#8221; howto, but what if you wanted [...]]]></description>
			<content:encoded><![CDATA[<p>I had a lot of fun figuring this out. I knew I needed OCFS2 for a clustering file system I was setting up, but none of the OCFS2 documentation tells you how to setup the underlying disk.</p>
<p>DRBD has a &#8220;do DRBD first, then OCFS2 on top of that&#8221; howto, but what if you wanted the underlying device to exist only on one box? (or in my case *had* to have the underlying device on only one box?)</p>
<p>GNBD looked like a good solution, but Ubuntu dropped support for gnbd a long time ago and there wasn&#8217;t a clearly documented &#8220;this is the gnbd replacement&#8221;.</p>
<p>I happened across an archived email in a kernel discussion group where they were discussing removing gnbd &#8220;now that we have iSCSI&#8221;, and that was my clue.</p>
<p>Turns out it&#8217;s <em>dead simple</em> to do, once you have the right steps. Here&#8217;s my documentation in case I ever need to come back and do this again (very likely).</p>
<p><span id="more-129"></span>First, the setup:</p>
<h3>Server1&nbsp;</p>
<p><div id="attachment_130" class="wp-caption alignright" style="width: 345px"><a href="http://www.richardpickett.com/wp-content/uploads/2011/03/ocfs2_over_iscsi.png"><img class="size-full wp-image-130" title="ocfs2_over_iscsi" src="http://www.richardpickett.com/wp-content/uploads/2011/03/ocfs2_over_iscsi.png" alt="OCFS2 over iSCSI w/ 2 servers" width="335" height="481" /></a><p class="wp-caption-text">Server Diagram</p></div></h3>
<p style="padding-left: 30px;">Has 2 physical drives, one is the boot/os drive, the second will be the device we serve up via iscsi</p>
<p style="padding-left: 30px;">Also mounts the iscsi device and ocfs2 partition as a client &#8211; this allows you to do full read/writes to the shared device</p>
<h3>Server2</h3>
<p style="padding-left: 30px;">Has one physical drive, the boot/os drive.</p>
<p style="padding-left: 30px;">Mounts the iscsi device and ocfs2 partition as a client.</p>
<p>&nbsp;</p>
<p>Now a <em>brief</em> description of OCFS2 and iSCSI. See their documentation for further details.</p>
<h3>OCFS2</h3>
<p>OCFS2 is a cluster file system that shares the file system <em>access</em> among as many servers as you want, and is much faster than legacy protocols like NFS.</p>
<h3>iSCSI</h3>
<p>iSCSI basically tells your kernel you have a SCSI disk, and it transports that access over IP.</p>
<p>iSCSI uses interesting language. The &#8220;server&#8221; is called the &#8220;target&#8221; and  the &#8220;client&#8221; that uses that iSCSI device is the &#8220;initiator&#8221;. I&#8217;ll  continue to use this lingo through this document to stay iSCSI  &#8220;politically correct&#8221;.</p>
<h3>Underlying Alternatives</h3>
<p><em>&#8220;Do I *have* to use iSCSI?&#8221;</em> &#8211; Ummmm, no! Another common setup is to use DRBD to sync two disks between two servers and put OCFS on top of that device. I had the constraint that I didn&#8217;t have enough underlying storage to split between the two servers. I basically had just enough for one local copy of the data (yes, we&#8217;re backing up and we have a remote secondary site for DR).</p>
<p>Another underlying architecture could just as easily be a PRDM exposed to multiple Ubuntu guest OS in VMWare.</p>
<h3>Get On With It Already</h3>
<p>I assume you&#8217;re root on both boxes, and so do all the commands in this how-to.</p>
<h4>iSCSI Target Setup</h4>
<p>First, we install the necessary packages:</p>
<pre style="padding-left: 30px;"># apt-get install iscsitarget
...
  * iscsitarget not enabled in "/etc/default/iscsitarget", not starting...</pre>
<p>Don&#8217;t let that last message throw you, it won&#8217;t start by default. Let&#8217;s change that:</p>
<pre style="padding-left: 30px;"># vim /etc/default/iscsitarget</pre>
<p>Change this:</p>
<pre style="padding-left: 30px;">ISCSITARGET_ENABLE=false</pre>
<p>To this:</p>
<pre style="padding-left: 30px;">ISCSITARGET_ENABLE=true</pre>
<p>save/exit (<em>:x</em> in vim)</p>
<p>Now we need to setup iSCSI to share our drive. In this case the drive is /dev/sdb &#8211; note, you can just share one partition, but keep in mind it will be seen as an entire block device by all iSCSI initiators and therefore will have to be partitioned as the iSCSI device. IOW, only share a partition if you don&#8217;t need/want to share out the entire drive.</p>
<pre style="padding-left: 30px;"># vim /etc/iet/ietd.conf</pre>
<p>Make sure everything there is already commented out (usually is), then put this at the bottom:</p>
<pre style="padding-left: 30px;">Target iqn.2011-03.server1:ocfs2
        IncomingUser username password
        OutgoingUser
        Lun 0 Path=/dev/sdb,Type=fileio
        Alias iscsiocfs2</pre>
<p><strong>iqn.2011-03.server1:ocfs2</strong> &#8211; replace 2011-03 w/ your year/month, replace server1 with your target server&#8217;s dns name, repace ocfs2 with the name of this iSCSI device name that suits you. If you have multiple devices served for several different purposes, I&#8217;d name them according to purpose.</p>
<p><strong>IncomingUser</strong> &#8211; put in the user and password you want, this is used only by the iSCSI connection, so it&#8217;s not related to any OS account.</p>
<p><strong>LUN</strong> &#8211; put the appropriate Path= value that matches the device you&#8217;re sharing,</p>
<p><strong>Alias</strong> &#8211; alias the shared device however you want, as of this writing it&#8217;s not really used.</p>
<p>Now we need to tell iSCSI to allow initiators to connect and lock down the IP(s) we&#8217;ll receive those requests from (you should also be using iptables, it&#8217;s default port is 7791)</p>
<pre style="padding-left: 30px;"># vim /etc/iet/initiators.allow</pre>
<p>Comment all the lines out and enter just this one line with your full iqn line and then IPs you&#8217;re granting access, or the word &#8220;ALL&#8221; for all IPs &#8211; very bad idea! In this case we&#8217;re granting access only to this server and the second server.</p>
<pre style="padding-left: 30px;">
<pre>iqn.2011-03.server1:ocfs2 192.168.13.25, 192.168.13.26</pre>
</pre>
<p>Save and exit, then start the iSCSI target:</p>
<pre style="padding-left: 30px;"># /etc/init.d/iscsitarget start</pre>
<h4>iSCSI Initiator Setup</h4>
<p>Since Server1 is also an initiator (client) of the iSCSI device, we&#8217;ll configure the initiator on the same server, this will help eliminate any complications that would arise from networking, etc &#8211; for a good admin not an issue, but starting simple and adding complexity is always a good way to go.</p>
<p>Install the iSCSI tools:</p>
<pre style="padding-left: 30px;"># apt-get install open-iscsi</pre>
<p>Set the iSCSI node to automatically startup:</p>
<pre style="padding-left: 30px;"># vim /etc/iscsi/iscsid.conf</pre>
<p>Change:</p>
<pre style="padding-left: 30px;">node.startup = manual</pre>
<p>to:</p>
<pre style="padding-left: 30px;">node.startup = automatic</pre>
<p>Save and exit, now we restart the iSCSI initiator:</p>
<pre style="padding-left: 30px;"># /etc/init.d/open-iscsi restart</pre>
<p>Now we scan the target for any iSCSI devices it&#8217;s offering, and should see our device get picked up:</p>
<pre style="padding-left: 30px;"># iscsiadm -m discovery -t st -p 192.168.13.25
192.168.13.25:3260,1 iqn.2011-03.server1:ocfs2</pre>
<p>You may need to open port 3260 for incoming tcp traffic in order to receive the connection.</p>
<p>Now we need to set the user name and password in the initiator. The successful scan will create a file in /etc/iscsi/nodes that identifies that target, we&#8217;ll use the command line to save the auth-type, name, and password:</p>
<pre style="padding-left: 30px;"># iscsiadm -m node --targetname "iqn.2011-03.server1:ocfs2" --portal "192.168.13.25:3260" --op=update --name node.session.auth.authmethod --value=CHAP
# iscsiadm -m node --targetname "iqn.2011-03.server1:ocfs2" --portal "192.168.13.25:3260" --op=update --name node.session.auth.username --value=it0FrewOcCejQuac6
# iscsiadm -m node --targetname "iqn.2011-03.server1:ocfs2" --portal "192.168.13.25:3260" --op=update --name node.session.auth.password --value=Ush4OdsAcCranOfub4</pre>
<p>Now we initiate the connection by logging in:</p>
<pre style="padding-left: 30px;"># iscsiadm -m node --targetname "iqn.2011-03.server1:ocfs2" --portal "192.168.13.25:3260" --login
Logging in to [iface: default, target: iqn.2011-03.server1:ocfs2, portal: 192.168.13.25,3260]
Login to [iface: default, target: iqn.2011-03.server1:ocfs2, portal: 192.168.13.25,3260]: successful</pre>
<p>Now we should see the device:</p>
<pre style="padding-left: 30px;"># ls -l /dev/sd*
...
brw-rw---- 1 root disk 8, 32 2011-03-28 10:35 /dev/sdc</pre>
<h4>OCFS2 Setup</h4>
<p>Install OCFS2 tools:</p>
<pre style="padding-left: 30px;"># apt-get install ocfs2-tools</pre>
<p>In setting up OCSF2 we&#8217;ll first setup the partitions and format the drive, keep in mind this is only needed *once*. Don&#8217;t repeat this particular step on any repeats of these steps on the other iSCSI initiators:</p>
<pre style="padding-left: 30px;"># cfdisk /dev/sdc</pre>
<p>I just make one partition using the entire disk, type 83 (linux).</p>
<p>Now format:</p>
<pre style="padding-left: 30px;">mkfs.ocfs2 -b 4k -C 32K -L "OCFS2Cluster" -N 2 /dev/sdc1</pre>
<p>Note &#8211; &#8220;-N&#8221; specifies the number of nodes using this device, it can always be increased later, but can&#8217;t be decreased. I&#8217;m setting it to 2 since that&#8217;s the total number of nodes that will be accessing it in my configuration.</p>
<p>Now we&#8217;re done with the one-time setup of the disk, we can proceed with the rest of the &#8220;common&#8221; installation steps for each client (don&#8217;t forget the apt-get install above).</p>
<p>Let&#8217;s set OCFS2 to load on boot:</p>
<p># vim /etc/default/o2cb</p>
<p>Change this:</p>
<pre style="padding-left: 30px;">O2CB_ENABLED=false</pre>
<p>to this:</p>
<pre style="padding-left: 30px;">O2CB_ENABLED=true</pre>
<p>Honestly, I&#8217;m not 100% sure why, but you will also have to run the dpkg tool to also configure o2cb (running dpkg-reconfigure *does not* change the file above):</p>
<pre style="padding-left: 30px;">dpkg-reconfigure ocfs2-tools</pre>
<p>Key questions:</p>
<p style="padding-left: 30px;">Would you like to start an OCFS2 cluster (O2CB) at boot time? &#8211; <strong>umm, <em>YES</em></strong></p>
<p style="padding-left: 30px;">Name of the cluster to start at boot time: <strong><em>same as you use below in the cluster.conf, &#8216;ocfscluster1&#8242;</em></strong></p>
<p>You may see &#8220;<strong>Checking 02CB cluster configuration: Failed</strong>&#8221; &#8211; you can ignore it for now.</p>
<p>Now, we need to setup the cluster configuration file. You can configure this on one host, then distribute it to all the hosts that will be using the OCFS2 &#8211; it should be exactly the same on all servers.</p>
<pre style="padding-left: 30px;"># vim /etc/ocfs2/cluster.conf</pre>
<pre style="padding-left: 30px;">cluster:
   node_count = 2
   name = ocfscluster1
node:
   ip_port = 7777
   ip_address = 192.168.13.25
   number = 1
   name = testiscsi01
   cluster = ocfscluster1
node:
   ip_port = 7777
   ip_address = 192.168.13.25
   number = 2
   name = testiscsi02
   cluster = ocfscluster1</pre>
<p>Note, you&#8217;ll need to open port 7777 for incoming traffic from the other nodes in the cluster in order for OCFS2 to connect.</p>
<p>&#8216;name&#8217; must be the actual hostname for that server, that&#8217;s how each machine knows which nodes in the config they are, and therefore which which cluster file systems they load.</p>
<p>Now, let&#8217;s restart o2cb, the &#8220;Checking 02CB cluster configuration: Failed&#8221; should now be &#8220;OK&#8221;:</p>
<pre style="padding-left: 30px;"># /etc/init.d/o2cb restart</pre>
<p>Make the directory where you&#8217;d like to mount the disk:</p>
<pre style="padding-left: 30px;"># mkdir /mnt/ocfs2</pre>
<p>and then mount it:</p>
<pre style="padding-left: 30px;"># mount /dev/sdc1 /mnt/ocfs2</pre>
<p>Check to make sure it&#8217;s &#8220;there&#8221;:</p>
<pre style="padding-left: 30px;"># ls -l /mnt/ocfs2/
total 0
drwxr-xr-x 2 root root 3896 2011-03-28 10:49 lost+found</pre>
<p>Want it to auto-mount on boot? (&#8220;<em>who wouldn&#8217;t?</em>&#8221; is the real question&#8230;.)</p>
<p>Add this to fstab:</p>
<pre style="padding-left: 30px;">/dev/sdc1 /mnt/ocfs2 ocfs2 _netdev 0 0</pre>
<p>and then reboot ;-D</p>
<p>You should see the path auto-mounted.</p>
<p>One caveat: since the underlying device is served by iSCSI, if the iSCSI server is down or not serving the iSCSI disk, none of the dependent OCFS initiators will be able to mount the partition since the iSCSI device won&#8217;t be there.</p>
<p>To add a new node to an online cluster, use the following command:</p>
<pre>
<pre style="padding-left: 30px;">o2cb_ctl -C -i -n NODENAME -t node -a number=NODENUM -a ip_address=IPADDR -a ip_port=IPPORT -a cluster=CLUSTERNAME</pre>
</pre>
<p>Now you can get back to your plans of world domination!</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div class='gig-share-button gig-share-button-bottom' id='gig-div-buttons-129-bottom'></div><script language='javascript'>var conf_129 = {
							APIKey: '2_8tibyN5lCqkpvDrshuDBxNX_Vh5Elb7HGKUT9NIxqg5FJzCs31Q3CgWra3cSLBDA',
							lang  : '',
							enabledProviders: ''
    					};
						
    					var image129 = {src:'http://www.richardpickett.com/wp-content/uploads/2011/03/ocfs2_over_iscsi.png',href:'http://richardpickett.com/ocfs2-over-iscsi-on-ubuntu-10-10-maverick-meerkat',type:'image'};
						var ua_129 = new gigya.services.socialize.UserAction(); 
						ua_129.setUserMessage('');  
						ua_129.setLinkBack('http://richardpickett.com/ocfs2-over-iscsi-on-ubuntu-10-10-maverick-meerkat'); 
						ua_129.setTitle('OCFS2 over iSCSI on Ubuntu 10.10 (Maverick Meerkat)');
						ua_129.addMediaItem(image129);	
		

						var params_129 ={ 
							userAction:ua_129,
							cssPrefix:'#gig-div-buttons-129-bottom',
							shareButtons:'facebook-like,google-plusone,share,twitter,email', // list of providers
							containerID: 'gig-div-buttons-129-bottom',
        					cid:''
						};
						gigya.services.socialize.showShareBarUI(conf_129,params_129);
					</script>
					]]></content:encoded>
			<wfw:commentRss>http://richardpickett.com/ocfs2-over-iscsi-on-ubuntu-10-10-maverick-meerkat/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ffmpeg screen capture</title>
		<link>http://richardpickett.com/ffmpeg-screen-capture#utm_source=feed&#038;utm_medium=feed&#038;utm_campaign=feed</link>
		<comments>http://richardpickett.com/ffmpeg-screen-capture#comments</comments>
		<pubDate>Mon, 07 Mar 2011 17:05:30 +0000</pubDate>
		<dc:creator>rpickett</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.richardpickett.com/?p=124</guid>
		<description><![CDATA[ffmpeg -y \ -f alsa \ -ac 2 \ -i pulse \ -f x11grab \ -r 25 \ -s 1354x768 \ -i :0.0 \ -vcodec libx264 \ -vpre lossless_ultrafast \ -crf 22 \ -acodec libmp3lame \ -ar 44100 \ -ab 126k \ -threads 3 \ ~/Desktop/screencast.mkv You expected more? ;-D]]></description>
			<content:encoded><![CDATA[<pre style="padding-left: 30px;">
ffmpeg -y \
       -f alsa \
       -ac 2 \
       -i pulse \
       -f x11grab \
       -r 25 \
       -s 1354x768 \
       -i :0.0 \
       -vcodec libx264 \
       -vpre lossless_ultrafast \
       -crf 22 \
       -acodec libmp3lame \
       -ar 44100 \
       -ab 126k \
       -threads 3 \
       ~/Desktop/screencast.mkv</pre>
<p><span id="more-124"></span><br />
You expected more? ;-D</p>
<div class='gig-share-button gig-share-button-bottom' id='gig-div-buttons-124-bottom'></div><script language='javascript'>var conf_124 = {
							APIKey: '2_8tibyN5lCqkpvDrshuDBxNX_Vh5Elb7HGKUT9NIxqg5FJzCs31Q3CgWra3cSLBDA',
							lang  : '',
							enabledProviders: ''
    					};
						
    					var image124 = {src:'http://richardpickett.com/wp-includes/images/blank.gif',href:'http://richardpickett.com/ffmpeg-screen-capture',type:'image'};
						var ua_124 = new gigya.services.socialize.UserAction(); 
						ua_124.setUserMessage('');  
						ua_124.setLinkBack('http://richardpickett.com/ffmpeg-screen-capture'); 
						ua_124.setTitle('ffmpeg screen capture');
						ua_124.addMediaItem(image124);	
		

						var params_124 ={ 
							userAction:ua_124,
							cssPrefix:'#gig-div-buttons-124-bottom',
							shareButtons:'facebook-like,google-plusone,share,twitter,email', // list of providers
							containerID: 'gig-div-buttons-124-bottom',
        					cid:''
						};
						gigya.services.socialize.showShareBarUI(conf_124,params_124);
					</script>
					]]></content:encoded>
			<wfw:commentRss>http://richardpickett.com/ffmpeg-screen-capture/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Resetting Mysql root password</title>
		<link>http://richardpickett.com/resetting-mysql-root-password#utm_source=feed&#038;utm_medium=feed&#038;utm_campaign=feed</link>
		<comments>http://richardpickett.com/resetting-mysql-root-password#comments</comments>
		<pubDate>Tue, 01 Mar 2011 16:08:23 +0000</pubDate>
		<dc:creator>rpickett</dc:creator>
				<category><![CDATA[Technical]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://www.richardpickett.com/?p=121</guid>
		<description><![CDATA[Common enough, something that I really should record for myself&#8230; # Run as root: /etc/init.d/mysqld stop mysqld_safe --skip-grant-tables &#038; echo "update user set Password = PASSWORD( 'NEW_PASSWORD_HERE' ) where user = 'root'; flush privileges;" &#124; mysql -u root mysql killall mysqld # now wait until mysqld exits (ps ax &#124; grep mysqld) /etc/init.d/mysqld start]]></description>
			<content:encoded><![CDATA[<p>Common enough, something that I really should record for myself&#8230;<br />
<span id="more-121"></span></p>
<pre>
# Run as root:
/etc/init.d/mysqld stop
mysqld_safe --skip-grant-tables &#038;
echo "update user set Password = PASSWORD( 'NEW_PASSWORD_HERE' ) where user = 'root'; flush privileges;" | mysql -u root mysql
killall mysqld
# now wait until mysqld exits (ps ax | grep mysqld)
/etc/init.d/mysqld start
</pre>
<div class='gig-share-button gig-share-button-bottom' id='gig-div-buttons-121-bottom'></div><script language='javascript'>var conf_121 = {
							APIKey: '2_8tibyN5lCqkpvDrshuDBxNX_Vh5Elb7HGKUT9NIxqg5FJzCs31Q3CgWra3cSLBDA',
							lang  : '',
							enabledProviders: ''
    					};
						
    					var image121 = {src:'http://richardpickett.com/wp-includes/images/blank.gif',href:'http://richardpickett.com/resetting-mysql-root-password',type:'image'};
						var ua_121 = new gigya.services.socialize.UserAction(); 
						ua_121.setUserMessage('');  
						ua_121.setLinkBack('http://richardpickett.com/resetting-mysql-root-password'); 
						ua_121.setTitle('Resetting Mysql root password');
						ua_121.addMediaItem(image121);	
		

						var params_121 ={ 
							userAction:ua_121,
							cssPrefix:'#gig-div-buttons-121-bottom',
							shareButtons:'facebook-like,google-plusone,share,twitter,email', // list of providers
							containerID: 'gig-div-buttons-121-bottom',
        					cid:''
						};
						gigya.services.socialize.showShareBarUI(conf_121,params_121);
					</script>
					]]></content:encoded>
			<wfw:commentRss>http://richardpickett.com/resetting-mysql-root-password/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Mark Of The Beast</title>
		<link>http://richardpickett.com/the-mark-of-the-beast#utm_source=feed&#038;utm_medium=feed&#038;utm_campaign=feed</link>
		<comments>http://richardpickett.com/the-mark-of-the-beast#comments</comments>
		<pubDate>Tue, 28 Dec 2010 19:20:11 +0000</pubDate>
		<dc:creator>rpickett</dc:creator>
				<category><![CDATA[Bible]]></category>

		<guid isPermaLink="false">http://www.richardpickett.com/?p=110</guid>
		<description><![CDATA[Understanding the mark of the beast is pretty simple once you have a little knowledge. You always see a lot of hype at churches and in movies, etc over &#8220;THE MARK OF THE BEAST&#8221; where it&#8217;s made out to be some deep dark scary mystery. Let&#8217;s take a look a the scriptures to see exactly [...]]]></description>
			<content:encoded><![CDATA[<p>Understanding the mark of the beast is pretty simple once you have a little knowledge. You always see a lot of hype at churches and in movies, etc over &#8220;<strong>THE MARK OF THE BEAST</strong>&#8221; where it&#8217;s made out to be some deep dark scary mystery. Let&#8217;s take a look a the scriptures to see exactly what the Bible says about it and dispel the myths and all the hype.<br />
<span id="more-110"></span><br />
First I&#8217;ll post all the relevant scriptures that we&#8217;ll be using in this post. When I read someone else&#8217;s article and they post scriptures I used to skip right over them and just jump down to what the person was writing about those scriptures. But that&#8217;s a really bad habit, I&#8217;ve found it&#8217;s really good to take the time to read real slow through the scriptures that are listed, then try to see the points the person is making using those scriptures. I hope you do the same.</p>
<blockquote><p>
Rev 13:16  And he causeth all, both small and great, rich and poor, free and bond, to receive a mark in their right hand, or in their foreheads: (17) And that no man might buy or sell, save he that had the mark, or the name of the beast, or the number of his name. (18)  Here is wisdom. Let him that hath understanding count the number of the beast: for it is the number of a man; and his number <em>is</em> Six hundred threescore <em>and</em> six. (KJV)
</p></blockquote>
<p>As always, before digging right into a verse or passage we should always take a look at the context that the verse is placed in. Revelation 13 is dealing with two beasts, one that rises out of the sea, the other that rises out of the land. This isn&#8217;t the focus of this article (it can be dealt with in another article easily), so let me just briefly tell what the two beasts are without a lot of explanation.</p>
<p>Each beast represents world powers. The first beast had 7 heads which are the six world powers that have already come and gone, and the one world power that now is. They are Egypt, Assyria, Babylon, Medio-Persia (Meeds and Persians), Greece, Rome, and the United States. The second beast has only one head, and in Rev 18:11 it says &#8220;<em>And the beast that was, and is not, even he is the eighth, and is of the seven&#8230;&#8221;</em>, meaning the eighth head is of the first seven heads. Counting them in order, the second beast&#8217;s head is the eighth head (the first beast had the first seven heads). Many believe, as do I, that the second beast, a.k.a. the eighth head, is a one-world power that is not yet in full power. This verse in Rev 18:11 shows that the eighth head is comprised of the 7 previous heads, a sign that it is a combination of all the nations together ruling as one. The first seven heads each ruled as single nations over the world, the eighth will be a coalition. Some have said it&#8217;s the UN. I say maybe, maybe not. Before the UN there was <em>The League of Nations</em> which didn&#8217;t have as much power, and the US and Britain conspired together, using WWII as it unfolded, and pushed for the establishment of the UN. Today the UN doesn&#8217;t have far reaching power as we can see the US does whatever it wants in spite of UN opposition (Bush II going into Iraq completely against the UN). That doesn&#8217;t sound much like a world power to me, but I&#8217;m not excluding the possibility that it will  become the eighth head in the future.</p>
<div class='gig-share-button gig-share-button-bottom' id='gig-div-buttons-110-bottom'></div><script language='javascript'>var conf_110 = {
							APIKey: '2_8tibyN5lCqkpvDrshuDBxNX_Vh5Elb7HGKUT9NIxqg5FJzCs31Q3CgWra3cSLBDA',
							lang  : '',
							enabledProviders: ''
    					};
						
    					var image110 = {src:'http://richardpickett.com/wp-includes/images/blank.gif',href:'http://richardpickett.com/the-mark-of-the-beast',type:'image'};
						var ua_110 = new gigya.services.socialize.UserAction(); 
						ua_110.setUserMessage('');  
						ua_110.setLinkBack('http://richardpickett.com/the-mark-of-the-beast'); 
						ua_110.setTitle('The Mark Of The Beast');
						ua_110.addMediaItem(image110);	
		

						var params_110 ={ 
							userAction:ua_110,
							cssPrefix:'#gig-div-buttons-110-bottom',
							shareButtons:'facebook-like,google-plusone,share,twitter,email', // list of providers
							containerID: 'gig-div-buttons-110-bottom',
        					cid:''
						};
						gigya.services.socialize.showShareBarUI(conf_110,params_110);
					</script>
					]]></content:encoded>
			<wfw:commentRss>http://richardpickett.com/the-mark-of-the-beast/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Quick Port Scan</title>
		<link>http://richardpickett.com/quick-port-scan#utm_source=feed&#038;utm_medium=feed&#038;utm_campaign=feed</link>
		<comments>http://richardpickett.com/quick-port-scan#comments</comments>
		<pubDate>Tue, 23 Nov 2010 19:18:31 +0000</pubDate>
		<dc:creator>rpickett</dc:creator>
				<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://www.richardpickett.com/?p=103</guid>
		<description><![CDATA[Down-and-dirty port scan: nc -z -v -w1 &#60;ip&#62; &#60;start port&#62;-&#60;end port&#62; 2&#62;&#38;1 &#124; grep succeeded -z &#8211; don&#8217;t connect to the port, continue scan -v &#8211; verbose -w1 &#8211; wait 1 second before continuing]]></description>
			<content:encoded><![CDATA[<p>Down-and-dirty port scan:</p>
<div id="_mcePaste">nc -z -v -w1 &lt;ip&gt; &lt;start port&gt;-&lt;end port&gt; 2&gt;&amp;1 | grep succeeded</div>
<div></div>
<div style="padding-left: 30px;">-z &#8211; don&#8217;t connect to the port, continue scan</div>
<div style="padding-left: 30px;">-v &#8211; verbose</div>
<div style="padding-left: 30px;">-w1 &#8211; wait 1 second before continuing</div>
<div class='gig-share-button gig-share-button-bottom' id='gig-div-buttons-103-bottom'></div><script language='javascript'>var conf_103 = {
							APIKey: '2_8tibyN5lCqkpvDrshuDBxNX_Vh5Elb7HGKUT9NIxqg5FJzCs31Q3CgWra3cSLBDA',
							lang  : '',
							enabledProviders: ''
    					};
						
    					var image103 = {src:'http://richardpickett.com/wp-includes/images/blank.gif',href:'http://richardpickett.com/quick-port-scan',type:'image'};
						var ua_103 = new gigya.services.socialize.UserAction(); 
						ua_103.setUserMessage('');  
						ua_103.setLinkBack('http://richardpickett.com/quick-port-scan'); 
						ua_103.setTitle('Quick Port Scan');
						ua_103.addMediaItem(image103);	
		

						var params_103 ={ 
							userAction:ua_103,
							cssPrefix:'#gig-div-buttons-103-bottom',
							shareButtons:'facebook-like,google-plusone,share,twitter,email', // list of providers
							containerID: 'gig-div-buttons-103-bottom',
        					cid:''
						};
						gigya.services.socialize.showShareBarUI(conf_103,params_103);
					</script>
					]]></content:encoded>
			<wfw:commentRss>http://richardpickett.com/quick-port-scan/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tripwire Notes</title>
		<link>http://richardpickett.com/tripwire-notes#utm_source=feed&#038;utm_medium=feed&#038;utm_campaign=feed</link>
		<comments>http://richardpickett.com/tripwire-notes#comments</comments>
		<pubDate>Tue, 05 Oct 2010 16:42:41 +0000</pubDate>
		<dc:creator>rpickett</dc:creator>
				<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://www.richardpickett.com/?p=93</guid>
		<description><![CDATA[Had to setup tripwire a couple times on several redhat servers, decided I better take notes to make each install easier&#8230; Install from rpm # rpm -i tripwire-2.4.1.1-1.el5.i386.rpm # cd /etc/tripwire Generate the site keyfile: # /usr/sbin/twadmin -m G --site-keyfile site.key Generate the local keyfile: # /usr/sbin/twadmin -m G --local-keyfile local.key Generate the signed config [...]]]></description>
			<content:encoded><![CDATA[<p>Had to setup tripwire a couple times on several redhat servers, decided I better take notes to make each install easier&#8230;</p>
<p><span id="more-93"></span><br />
<code></p>
<p>Install from rpm</p>
<p># rpm -i tripwire-2.4.1.1-1.el5.i386.rpm</p>
<p># cd /etc/tripwire</p>
<p>Generate the site keyfile:</p>
<p># /usr/sbin/twadmin -m G --site-keyfile site.key</p>
<p>Generate the local keyfile:</p>
<p># /usr/sbin/twadmin -m G --local-keyfile local.key</p>
<p>Generate the signed config file:</p>
<p># /usr/sbin/twadmin --create-cfgfile -S site.key /etc/twcfg.txt</p>
<p>Any time you need to update the twpol.txt file, re-run this command (and run it once in the initial config) to create the signed policy file:</p>
<p># /usr/sbin/twadmin --create-polfile -S site.key /etc/twpol.txt</p>
<p>Then you need to setup the symlinks according to the host name:</p>
<p># ln -s site.key `hostname`-site.key<br />
# ln -s local.key `hostname`-local.key</p>
<p>Initialize the install:</p>
<p># /usr/sbin/tripwire --init</p>
<p>Now to run a check:</p>
<p># /usr/sbin/tripwire --check<br />
</code></p>
<p>All done!</p>
<div class='gig-share-button gig-share-button-bottom' id='gig-div-buttons-93-bottom'></div><script language='javascript'>var conf_93 = {
							APIKey: '2_8tibyN5lCqkpvDrshuDBxNX_Vh5Elb7HGKUT9NIxqg5FJzCs31Q3CgWra3cSLBDA',
							lang  : '',
							enabledProviders: ''
    					};
						
    					var image93 = {src:'http://richardpickett.com/wp-includes/images/blank.gif',href:'http://richardpickett.com/tripwire-notes',type:'image'};
						var ua_93 = new gigya.services.socialize.UserAction(); 
						ua_93.setUserMessage('');  
						ua_93.setLinkBack('http://richardpickett.com/tripwire-notes'); 
						ua_93.setTitle('Tripwire Notes');
						ua_93.addMediaItem(image93);	
		

						var params_93 ={ 
							userAction:ua_93,
							cssPrefix:'#gig-div-buttons-93-bottom',
							shareButtons:'facebook-like,google-plusone,share,twitter,email', // list of providers
							containerID: 'gig-div-buttons-93-bottom',
        					cid:''
						};
						gigya.services.socialize.showShareBarUI(conf_93,params_93);
					</script>
					]]></content:encoded>
			<wfw:commentRss>http://richardpickett.com/tripwire-notes/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

