<?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>intuitive engineering &#187; websphere</title>
	<atom:link href="http://dougmunsinger.com/category/websphere/feed" rel="self" type="application/rss+xml" />
	<link>http://dougmunsinger.com</link>
	<description>doug munsinger</description>
	<lastBuildDate>Mon, 07 Jun 2010 16:44:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>another tool for SVN &#8211; list_repositories.pl</title>
		<link>http://dougmunsinger.com/2009/05/subversion-cg-tool-list-repositories.html</link>
		<comments>http://dougmunsinger.com/2009/05/subversion-cg-tool-list-repositories.html#comments</comments>
		<pubDate>Mon, 11 May 2009 15:28:14 +0000</pubDate>
		<dc:creator>doug</dc:creator>
				<category><![CDATA[Solaris]]></category>
		<category><![CDATA[apache2]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[websphere]]></category>
		<category><![CDATA[CGI.pm]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://dougmunsinger.com/?p=762</guid>
		<description><![CDATA[&#160; &#160; One of the features of subversion + apache2 is the ability to list repositories &#8211; natively.&#160; SVNParentPath /apps/repos SVNListParentPath on Unfortunately, once you restrict the httpd.conf to individual repositories and start handling permissions separately you lose that.&#160; Both of these permissions, set at the top level, at the parent path to the repositories, [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p>&nbsp;</p>
<p>One of the features of subversion + apache2 is the ability to list repositories &#8211; natively.&nbsp;</p>
<p>SVNParentPath /apps/repos<br />
SVNListParentPath on</p>
<p>Unfortunately, once you restrict the httpd.conf to individual repositories and start handling permissions separately you lose that.&nbsp; Both of these permissions, set at the top level, at the parent path to the repositories, have to be commented out to have the individual permissions on the directories below take effect.</p>
<p>And listing just the repositories wasn&#8217;t enough for what I had in mind &#8211; I wanted a read-only table showing an individual developer or a team lead for a project who has what permissions for the subversion repositories. All the users, all the repositories.</p>
<p>Just your basic cgi.</p>
<p>&nbsp;</p>
<p><a href="http://dougmunsinger.com/images/posts/2009/repos_1.png" rel="shadowbox[post-762];player=img;" title="repository listing cgi"><img src="http://dougmunsinger.com/images/posts/2009/repos_1_420.png" title="repos" alt="repos" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;and the script:</p>
<p><a href="http://dougmunsinger.com/images/posts/2009/list_repositories.pl.txt" title="list_repositories.pl"><br />
</a><code>#! /bin/perl -w</p>
<p>
# script to parse and display users and repositories and rights (R, RW)</p>
<p>use strict;<br />
use CGI qw(:standard);<br />
use CGI::Carp qw(fatalsToBrowser);</p>
<p>
##----------------------------<br />
## Variables<br />
##----------------------------</p>
<p>
#debug<br />
my $debug = 0; #set to 0 to turn off, 1 (true) to turn on </p>
<p># title for page<br />
my $PageTitle = &quot;List of SVN Repositories&quot;;</p>
<p>## repository directory<br />
my $SVN = &quot;/apps/repos&quot;;<br />
## location for htpasswd files<br />
my $HTDIR = &quot;/apps/apache2/conf/htpasswd&quot;;<br />
## Set untainted path<br />
$ENV{PATH} = '/apps/apache2/bin:/bin:/usr/bin:/usr/local/bin';<br />
$ENV{IFS} = &quot;&quot; if $ENV{IFS} ne &quot;&quot;;</p>
<p># css <br />
my $css = &quot;http://&lt;your server name&gt;/css/main.css&quot;;<br />
my $headerimg = &quot;http://&lt;your server name&gt;/css/roger_rabbit_120.jpg&quot;;</p>
<p>
##------------------------------<br />
## MAIN<br />
##------------------------------</p>
<p>&amp;standard_header;<br />
my ($ref_repos, $ref_tabledata, $ref_users) = &amp;CreateTableSpace;<br />
&amp;DisplayTable ($ref_repos, $ref_tabledata, $ref_users);<br />
&amp;standard_footer;<br />
exit;</p>
<p>##------------------------------<br />
## subs<br />
##------------------------------</p>
<p>sub standard_header {<br />
&nbsp;&nbsp;&nbsp; print header();<br />
&nbsp;&nbsp;&nbsp; print start_html(-Title =&gt; &quot;$PageTitle&quot;, -BGCOLOR=&gt;&quot;White&quot;, <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -style =&gt; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -src =&gt; &quot;${css}&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; );<br />
&nbsp;&nbsp;&nbsp; print (&quot;&lt;div id=\&quot;header\&quot;&gt;\n&quot;);<br />
&nbsp;&nbsp;&nbsp; print p(&quot;&lt;img src=\&quot;${headerimg}\&quot; title=\&quot;Wells logo\&quot; alt=\&quot;wells logo\&quot;/&gt;\n&quot;);<br />
&nbsp;&nbsp;&nbsp; print (&quot;&lt;/div&gt;\n&quot;);<br />
&nbsp;&nbsp;&nbsp; print (&quot;&lt;div id=\&quot;headertitle\&quot;&gt;\n&quot;);<br />
&nbsp;&nbsp;&nbsp; print h3(&quot;Repositories&lt;br/&gt;\nusers | read (R) | read &amp; write (RW)\n&quot;); # start_multipart_form() if file upload<br />
}</p>
<p>
sub standard_footer { <br />
&nbsp;&nbsp;&nbsp; print end_html(); <br />
}</p>
<p>
sub CreateTableSpace {<br />
&nbsp;&nbsp;&nbsp; my $ref_repos = &amp;GetBlankRepos;<br />
&nbsp;&nbsp;&nbsp; my @repos = @$ref_repos; # dereference<br />
&nbsp;&nbsp;&nbsp; my %tabledata = (); # hash to hold table data<br />
&nbsp;&nbsp;&nbsp; my @users = (); # list of users<br />
&nbsp;&nbsp;&nbsp; my %seen = (); <br />
&nbsp;&nbsp;&nbsp; foreach my $rep (@repos) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; open(FILE, &quot;$HTDIR/${rep}_read&quot;) || croak &quot;Failed to open $HTDIR/${rep}_read for reading...&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my @filelines = &lt;FILE&gt;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; close FILE;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach my $line (@filelines) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # lines are user:passwd<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my ($user, $pass) = split (&quot;:&quot;, $line);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unless ($seen{$user}) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $seen{$user} = 1; # save as seen<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; push (@users, $user); # save the user to a list<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $tabledata{$rep}{$user} = &quot;read&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; open (FILE, &quot;$HTDIR/${rep}_write&quot;) || croak &quot;Failed to open $HTDIR/${rep}_write for reading&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my @file_lines = &lt;FILE&gt;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; close FILE;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach my $line (@file_lines) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # lines are user:passwd<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my ($user, $pass) = split (&quot;:&quot;, $line);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unless ($seen{$user}) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $seen{$user} = 1; # save as seen<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; push (@users, $user); # save the user to a list<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $tabledata{$rep}{$user} = &quot;readwrite&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; return (\@repos, \%tabledata, \@users);<br />
}</p>
<p>
sub GetBlankRepos {<br />
&nbsp;&nbsp;&nbsp; my @repos = ();<br />
&nbsp;&nbsp;&nbsp; # list $SVN<br />
&nbsp;&nbsp;&nbsp; opendir (DIR, $SVN) || croak &quot;Failed to open directory $SVN for reading...&quot;;<br />
&nbsp;&nbsp;&nbsp; while (defined(my $file = readdir(DIR))) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # skip &quot;.&quot;, &quot;..&quot; and .&lt;hidden&gt; files...<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ($file =~ /^\./) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; next;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; push(@repos, $file);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; return (\@repos);<br />
}</p>
<p>sub DisplayTable {<br />
&nbsp;&nbsp;&nbsp; my $ref_repos = shift;&nbsp; #@repos<br />
&nbsp;&nbsp;&nbsp; my $ref_tabledata = shift; # %tabledata<br />
&nbsp;&nbsp;&nbsp; my $ref_users = shift; # @users<br />
&nbsp;&nbsp;&nbsp; # dereference<br />
&nbsp;&nbsp;&nbsp; my @repos = @$ref_repos;<br />
&nbsp;&nbsp;&nbsp; my %tabledata = %$ref_tabledata;<br />
&nbsp;&nbsp;&nbsp; my @users = @$ref_users;<br />
&nbsp;&nbsp;&nbsp; # repos across the top, users down, R or RW for permissions<br />
&nbsp;&nbsp;&nbsp; # $tabledata{$rep}{$user} = &quot;readwrite&quot;;<br />
&nbsp;&nbsp;&nbsp; # start table<br />
&nbsp;&nbsp;&nbsp; print (&quot;&lt;table&gt;\n&lt;tbody&gt;\n&quot;);<br />
&nbsp;&nbsp;&nbsp; # table header<br />
&nbsp;&nbsp;&nbsp; my $cols = ($#repos + 1);<br />
&nbsp;&nbsp;&nbsp; print (&quot;&lt;tr&gt;&lt;td&gt;Users&lt;/td&gt;&lt;td colspan=\&quot;$cols\&quot;&gt;Repositories&lt;/td&gt;&lt;/tr&gt;\n&quot;);<br />
&nbsp;&nbsp;&nbsp; print (&quot;&lt;div id=\&quot;repotitles\&quot;&gt;&lt;tr&gt;\n&lt;td&gt;&amp;nbsp;&lt;/td&gt;&quot;);<br />
&nbsp;&nbsp;&nbsp; foreach my $rep (@repos) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print (&quot;&lt;td&gt;$rep&lt;/td&gt;&quot;);<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; print (&quot;\n&lt;/tr&gt;\n&lt;/div&gt;\n&quot;);<br />
&nbsp;&nbsp;&nbsp; foreach my $user (@users) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print (&quot;&lt;tr&gt;\n&lt;td&gt;$user&lt;/td&gt;&quot;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach my $repo (@repos) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ($tabledata{$repo}{$user}) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ($tabledata{$repo}{$user} eq &quot;read&quot;) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print (&quot;&lt;td&gt;R&lt;/td&gt;&quot;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } elsif ($tabledata{$repo}{$user} eq &quot;readwrite&quot;) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print (&quot;&lt;td&gt;RW&lt;/td&gt;&quot;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print (&quot;&lt;td&gt;&amp;nbsp; - &amp;nbsp;&lt;/td&gt;&quot;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print (&quot;\n&lt;/tr&gt;\n&quot;);<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; # finish table<br />
&nbsp;&nbsp;&nbsp; print (&quot;&lt;/tbody&gt;\n&lt;/table&gt;\n&quot;);<br />
}</code></p>

<div class="sociable">
<span class="sociable_tagline">
share:
	<span>These icons link to social bookmarking sites where readers can share and discover new web pages.</span>
</span>
<ul>
	<li><a href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fdougmunsinger.com%2F2009%2F05%2Fsubversion-cg-tool-list-repositories.html&amp;title=another%20tool%20for%20SVN%20-%20list_repositories.pl" title="Digg" onfocus="sociable_description_link(this, 'bodytext')" rel="nofollow" target="_blank"><img src="http://dougmunsinger.com/wp-content/plugins/sociable-zyblog-edition/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a></li>
	<li><a href="http://del.icio.us/post?url=http%3A%2F%2Fdougmunsinger.com%2F2009%2F05%2Fsubversion-cg-tool-list-repositories.html&amp;title=another%20tool%20for%20SVN%20-%20list_repositories.pl" title="del.icio.us" rel="nofollow" target="_blank"><img src="http://dougmunsinger.com/wp-content/plugins/sociable-zyblog-edition/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li>
	<li><a href="http://www.stumbleupon.com/submit.php?url=http://dougmunsinger.com/2009/05/subversion-cg-tool-list-repositories.html" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://dougmunsinger.com/wp-content/plugins/sociable-zyblog-edition/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a></li>
	<li><a href="http://reddit.com/submit?url=http%3A%2F%2Fdougmunsinger.com%2F2009%2F05%2Fsubversion-cg-tool-list-repositories.html&amp;title=another%20tool%20for%20SVN%20-%20list_repositories.pl" title="Reddit" rel="nofollow" target="_blank"><img src="http://dougmunsinger.com/wp-content/plugins/sociable-zyblog-edition/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a></li>
	<li><a href="http://www.bloglines.com/sub/http://dougmunsinger.com/2009/05/subversion-cg-tool-list-repositories.html" title="Bloglines" rel="nofollow" target="_blank"><img src="http://dougmunsinger.com/wp-content/plugins/sociable-zyblog-edition/images/bloglines.png" title="Bloglines" alt="Bloglines" class="sociable-hovers" /></a></li>
	<li><a href="mailto:?subject=another%20tool%20for%20SVN%20-%20list_repositories.pl&amp;body=http%3A%2F%2Fdougmunsinger.com%2F2009%2F05%2Fsubversion-cg-tool-list-repositories.html" title="email" onfocus="sociable_description_link(this, 'E-mail this story to a friend!')" rel="nofollow" target="_blank"><img src="http://dougmunsinger.com/wp-content/plugins/sociable-zyblog-edition/images/email.png" title="email" alt="email" class="sociable-hovers" /></a></li>
	<li><a href="http://www.facebook.com/share.php?u=http%3A%2F%2Fdougmunsinger.com%2F2009%2F05%2Fsubversion-cg-tool-list-repositories.html" title="Facebook" rel="nofollow" target="_blank"><img src="http://dougmunsinger.com/wp-content/plugins/sociable-zyblog-edition/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li>
	<li><a href="http://faves.com/Authoring.aspx?u=http%3A%2F%2Fdougmunsinger.com%2F2009%2F05%2Fsubversion-cg-tool-list-repositories.html&amp;title=another%20tool%20for%20SVN%20-%20list_repositories.pl" title="Faves" rel="nofollow" target="_blank"><img src="http://dougmunsinger.com/wp-content/plugins/sociable-zyblog-edition/images/faves.png" title="Faves" alt="Faves" class="sociable-hovers" /></a></li>
	<li><a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fdougmunsinger.com%2F2009%2F05%2Fsubversion-cg-tool-list-repositories.html&amp;title=another%20tool%20for%20SVN%20-%20list_repositories.pl&amp;source=intuitive+engineering&amp;summary=EXCERPT" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://dougmunsinger.com/wp-content/plugins/sociable-zyblog-edition/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a></li>
	<li><a href="http://www.mixx.com/submit?page_url=http%3A%2F%2Fdougmunsinger.com%2F2009%2F05%2Fsubversion-cg-tool-list-repositories.html&amp;title=another%20tool%20for%20SVN%20-%20list_repositories.pl" title="Mixx" rel="nofollow" target="_blank"><img src="http://dougmunsinger.com/wp-content/plugins/sociable-zyblog-edition/images/mixx.png" title="Mixx" alt="Mixx" class="sociable-hovers" /></a></li>
	<li><a href="http://www.netscape.com/submit/?U=http%3A%2F%2Fdougmunsinger.com%2F2009%2F05%2Fsubversion-cg-tool-list-repositories.html&amp;T=another%20tool%20for%20SVN%20-%20list_repositories.pl" title="Netscape" rel="nofollow" target="_blank"><img src="http://dougmunsinger.com/wp-content/plugins/sociable-zyblog-edition/images/netscape.gif" title="Netscape" alt="Netscape" class="sociable-hovers" /></a></li>
	<li><a href="http://www.newsider.de/submit.php?url=http%3A%2F%2Fdougmunsinger.com%2F2009%2F05%2Fsubversion-cg-tool-list-repositories.html" title="Newsrider" rel="nofollow" target="_blank"><img src="http://dougmunsinger.com/wp-content/plugins/sociable-zyblog-edition/images/newsrider.png" title="Newsrider" alt="Newsrider" class="sociable-hovers" /></a></li>
	<li><a href="http://slashdot.org/bookmark.pl?title=another%20tool%20for%20SVN%20-%20list_repositories.pl&amp;url=http%3A%2F%2Fdougmunsinger.com%2F2009%2F05%2Fsubversion-cg-tool-list-repositories.html" title="Slashdot" rel="nofollow" target="_blank"><img src="http://dougmunsinger.com/wp-content/plugins/sociable-zyblog-edition/images/slashdot.png" title="Slashdot" alt="Slashdot" class="sociable-hovers" /></a></li>
	<li><a href="http://technorati.com/faves?add=http%3A%2F%2Fdougmunsinger.com%2F2009%2F05%2Fsubversion-cg-tool-list-repositories.html" title="Technorati" rel="nofollow" target="_blank"><img src="http://dougmunsinger.com/wp-content/plugins/sociable-zyblog-edition/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a></li>
	<li><a href="http://twitter.com/home?status=http%3A%2F%2Fdougmunsinger.com%2F2009%2F05%2Fsubversion-cg-tool-list-repositories.html" title="TwitThis" rel="nofollow" target="_blank"><img src="http://dougmunsinger.com/wp-content/plugins/sociable-zyblog-edition/images/twitter.png" title="TwitThis" alt="TwitThis" class="sociable-hovers" /></a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://dougmunsinger.com/2009/05/subversion-cg-tool-list-repositories.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>how to monitor ibm mq from nagios</title>
		<link>http://dougmunsinger.com/2008/10/how-to-monitor-ibm-mq-from-nagios.html</link>
		<comments>http://dougmunsinger.com/2008/10/how-to-monitor-ibm-mq-from-nagios.html#comments</comments>
		<pubDate>Wed, 22 Oct 2008 00:21:45 +0000</pubDate>
		<dc:creator>doug</dc:creator>
				<category><![CDATA[websphere]]></category>
		<category><![CDATA[monitoring]]></category>
		<category><![CDATA[nagios]]></category>

		<guid isPermaLink="false">http://dougmunsinger.com/?p=546</guid>
		<description><![CDATA[&#160; This was one of the search terms that found an article here&#8230; I hadn&#8217;t addressed this directly, but I use Nagios to monitor my company&#8217;s server environment, and specifically implemented that monitoring for IBM Websphere MQ. For MQ, I run nagios monitoring against queue depth and processes. I installed three plugins to run against [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p>This was one of the search terms that found an article here&#8230;  I hadn&#8217;t addressed this directly, but I use Nagios to monitor my company&#8217;s server environment, and specifically implemented that monitoring for IBM Websphere MQ. </p>
<p>For MQ, I run nagios monitoring against queue depth and processes.  I installed three plugins to run against WebSphere.  Of these one was developed for my company&#8217;s needs (qdepth), one was changed slightly (channels) and the last debugged, found not to actually measure accurately, and not resolved (message age).   </p>
<p>Here&#8217;s the nagios console for the websphere MQ server.  &#8220;message age&#8221; in the second qdepth check service title is deceptive &#8211; actually checking qdepth&#8230;</p>
<p>&nbsp;</p>
<p><a href="../../../images/posts/2008/nagios.png" rel="shadowbox[post-546];player=img;" title="websphere MQ nagios server result"><img src="../../../images/posts/2008/nagios_400.png" title="nagios" alt="nagios"/></a></p>
<p>&nbsp;</p>
<p>This is the commands section from the nrpe.cfg file on the WebSphere MQ server. </p>
<p>&nbsp;</p>
<p><code><br />
command[check_mq_channel]=/usr/local/nagios/libexec/check_mq_channel.sh $ARG1$ $ARG2$<br />
command[check_mq_msgage]=/usr/local/nagios/libexec/check_mq_msgage.sh $ARG1$ $ARG2$ $ARG3$ $ARG4$<br />
command[wmq_check_qdepth]=/usr/local/nagios/libexec/wmq_check_qdepth.pl $ARG1$ $ARG2$ $ARG3$<br />
</code></p>
<p>&nbsp;</p>
<p>Of these we only really using qdepth monitoring.   The channels come up triggered, so an inactive state is fine, and the plugin as written only tests for &#8220;running&#8221;.  The message age plugin, as I mentioned,  doesn&#8217;t actually work.  </p>
<p> When I first looked at setting this messaging up and then  monitoring it, I searched for &#8220;nagios monitoring MQ webshere&#8221;  and found several pre-written plugins.  I took each plugin and tested it for usability and for accurate results and for meeting what we needed for monitoring. </p>
<p>The message age plugin, in testing, actually returned a hard-coded result rather than actually testing and returning a valid answer.  I started to fix it, set it aside and haven&#8217;t resolved it.  I don&#8217;t recall the source for the plugin.  Check each piece of code you download from the internet &#8211; it may have gone through extensive development and testing, or it could just as easily have been hacked together in an hour.  Your mileage may seriously vary and I would highly recommend you verify any of this before you bet your job on it.  </p>
<p>Here&#8217;s the qdepth plugin &#8211; I think I wrote or re-wrote this pretty much from scratch, but the original concept for parsing runmcsc came from one of the plugins I downloaded, written by Kyle O&#8217;Donnell &#8211; the channel plugin has his original author credit intact.  This plugin has alerted once to an increasing qdepth, which turned out to be an issue with an SSL certificate. </p>
<p>&nbsp;</p>
<hr/>
<code><br />
#! /bin/perl</code></p>
<p><code>## wmq_check_qdepth.pl<br />
#<br />
# nrpe (nagios) script to check websphere qdepth</code></p>
<p><code># uses runmqsc binary<br />
#<br />
# display queue ('APP.REQUEST')<br />
#      8 : display queue ('APP.REQUEST')<br />
#      AMQ8409: Display Queue details.<br />
#      QUEUE(APP.REQUEST)                 TYPE(QLOCAL)<br />
#      ACCTQ(QMGR)                             ALTDATE(2008-01-22)<br />
#      ALTTIME(14.18.23)                       BOQNAME( )<br />
#      BOTHRESH(0)                             CLUSNL( )<br />
#      CLUSTER( )                              CLWLPRTY(0)<br />
#      CLWLRANK(0)                             CLWLUSEQ(QMGR)<br />
#      CRDATE(2008-01-22)                      CRTIME(14.18.23)<br />
#      CURDEPTH(0)                             DEFBIND(OPEN)<br />
#      DEFPRTY(0)                              DEFPSIST(NO)<br />
#      DEFSOPT(SHARED)                         DEFTYPE(PREDEFINED)<br />
#      DESCR( )                                DISTL(NO)<br />
#      GET(ENABLED)                            HARDENBO<br />
#      INITQ( )                                IPPROCS(0)<br />
#      MAXDEPTH(5000)                          MAXMSGL(4194304)<br />
#      MONQ(QMGR)                              MSGDLVSQ(PRIORITY)<br />
#      NOTRIGGER                               NPMCLASS(NORMAL)<br />
#      OPPROCS(0)                              PROCESS( )<br />
#      PUT(ENABLED)                            QDEPTHHI(80)<br />
#      QDEPTHLO(20)                            QDPHIEV(DISABLED)<br />
#      QDPLOEV(DISABLED)                       QDPMAXEV(ENABLED)<br />
#      QSVCIEV(NONE)                           QSVCINT(999999999)<br />
#      RETINTVL(999999999)                     SCOPE(QMGR)<br />
#      SHARE                                   STATQ(QMGR)<br />
#      TRIGDATA( )                             TRIGDPTH(1)<br />
#      TRIGMPRI(0)                             TRIGTYPE(FIRST)<br />
#      USAGE(NORMAL)</code></p>
<p><code>###  Variables  ###</code></p>
<p><code># test values set if this flag is true (1)<br />
### THIS MUST BE SET TO 0 IN PRODUCTION!!! ###<br />
my $test = 0;</code></p>
<p><code># debug flag (adds messages)<br />
my $debug = 0;<br />
my $LOG = "/tmp/wmq_check_qdepth.pl.log";</code></p>
<p><code># runmqsc binary<br />
my $MQSC = "/opt/mqm/bin/runmqsc";</code></p>
<p><code>###    ARGS    ###</code></p>
<p><code># first argument is warn level<br />
my $WARN = shift;<br />
# second arg is crtitical level<br />
my $CRIT = shift;</p>
<p># third arg is queue name<br />
my $QUEUE = shift;</code></p>
<p><code># set for dev purposes<br />
if ($test) {<br />
    $WARN = 5;<br />
    $CRIT = 10;<br />
    $QUEUE = "1A33.EVG.REQUEST";<br />
}</code></p>
<p><code># validate<br />
# WARN and CRIT must be greater than 0 and CRIT must be greater than WARN<br />
unless (($WARN > 0) &#038;&#038; ($CRIT > 0)) {<br />
    print ("Command Failed:  WARN and CRIT levels must be greater than 0\n");<br />
    exit 3;<br />
}<br />
unless ($CRIT > $WARN) {<br />
    print ("Command Failed:  CRIT must be greater than WARN\n");<br />
    exit 4;<br />
}</code></p>
<p><code>###    Subs    ###</code></p>
<p><code>###    MAIN    ###</code></p>
<p><code># run query<br />
my $result = `echo "display queue ('${QUEUE}')" | $MQSC | grep CURDEPTH`;<br />
print ("result: $result\n") if $debug;<br />
# parse result<br />
my @lines = split ("\n", $result);  # divide into an array by end of line...<br />
                                    # each element of the array will contain a single line<br />
# set variables<br />
my ($PARAM, $VALUE);</code></p>
<p><code>for my $line (@lines) {<br />
    # each line is one or two elements like "QDPLOEV(DISABLED)                       QDPMAXEV(ENABLED)"<br />
    # divide those...<br />
    my ($first, $discard) = split (' ', $line);<br />
    print ("\$first: $first   \$discard $discard\n") if $debug;<br />
    ($PARAM, $VALUE) = split ('\(', $first);<br />
    $VALUE =~ s/\)//;<br />
    print ("\$PARAM: $PARAM    \$VALUE: $VALUE\n") if $debug;<br />
}</code></p>
<p><code># testing value<br />
$VALUE = 13 if $test;<br />
# check for $WARN and $CRIT levels, exit 0 as OK, 1 as warn or 2 as critical<br />
if ($VALUE == 0) {<br />
    print ("OK:  found qdepth for $QUEUE at 0\n");<br />
    exit 0;<br />
} elsif ($VALUE < $WARN) {<br />
    print ("OK:   found qdepth for $QUEUE at $VALUE\n");<br />
    exit 0;<br />
} elsif (($VALUE >= $WARN) &#038;&#038; ($VALUE < $CRIT)) {<br />
    print ("WARN: qdepth of $QUEUE is at $VALUE:  exceeds WARN thresh of $WARN\n");<br />
    exit 1;<br />
} elsif ($VALUE >= $CRIT) {<br />
    print ("CRITICAL:  qdepth for $QUEUE at $VALUE: exceeds CRITICAL thresh of $CRIT\n");<br />
    exit 2;<br />
}<br />
</code></p>
<hr/>
<p>&nbsp;</p>
<p>This is the channel status plugin &#8211; I may have re-written the original data gathering runmssc string, but the majority of the plugin remained intact&#8230;</p>
<p>&nbsp;</p>
<hr/>
<code><br />
#!/bin/ksh<br />
#<br />
# check queue manager status<br />
#<br />
# Kyle O'Donnell <kyle[dot]odonnell[at]gmail[dot]com><br />
#<br />
#$Id: check_mq_channel,v 1.2 2007/04/04 14:36:02 kodonnel Exp $<br />
#<br />
# debug<br />
DATE=`date`<br />
LOG="/tmp/nrpe_check_mq_channel.sh.log"<br />
echo "" >> $LOG<br />
echo $DATE >> $LOG<br />
echo "" >> $LOG<br />
[ $# -ne 2 ] &#038;&#038; echo "usage: $0 <channel> <queue manager>" &#038;&#038;  exit 3<br />
channel=$1<br />
qmgr=$2<br />
echo "channel: $channel  qmanager: $qmgr" >> $LOG<br />
RUNMQSC="/opt/mqm/bin/runmqsc"<br />
chanstatus=`echo "dis chs(${channel}) status" | ${RUNMQSC} ${qmgr} | grep -i "status(running)"`<br />
echo "channel status result:  $chanstatus" >> $LOG<br />
if echo $chanstatus |grep -i "status(running)" > /dev/null 2>&#038;1; then<br />
        STATE=0<br />
        printf "${channel} on ${qmgr} running"<br />
        echo ""<br />
        echo ""<br />
else<br />
        STATE=2<br />
        printf "${channel} on ${qmgr} not running"<br />
        echo ""<br />
        echo ""<br />
fi<br />
echo "state:  $STATE" >> $LOG<br />
exit $STATE;<br />
</code></p>
<hr/>
<p>&nbsp;</p>
<p> Here&#8217;s the server.cfg file for the Websphere MQ machine on the nagios server:</p>
<p>&nbsp;</p>
<hr/>
<p><code><br />
define service {<br />
        use                             generic-service<br />
        host_name                       mq1<br />
        service_description             Host Alive<br />
        check_period                    24x7<br />
        contact_groups                  unix-administrators<br />
        notification_period             24x7<br />
        check_command                   check-host-alive<br />
}</code></p>
<p><code>define service {<br />
        use                             generic-service<br />
        host_name                       mq1<br />
        service_description             Sonic Bridge java process<br />
        check_period                    24x7<br />
        contact_groups                  esb-administrators<br />
        notification_period             24x7<br />
        check_command                   check_unix_proc!mqm!1!java<br />
}</code></p>
<p><code>define service {<br />
        use                             generic-service<br />
        host_name                      mq1<br />
        service_description             SSB queue depth EVGPQM01.DEAD.QUEUE message age<br />
        check_period                    24x7<br />
        contact_groups                  systems-services,help_desk<br />
        notification_period             24x7<br />
        check_command                   wmq_check_qdepth!1!3!QMGR01!QMGR01.DEAD.QUEUE<br />
}</code></p>
<p><code>define service {<br />
        use                             generic-service<br />
        host_name                       mq1<br />
        service_description             server queue depth APPLICATION.RESPONSE<br />
        check_period                    24x7<br />
        contact_groups                  systems-services,help_desk<br />
        notification_period             24x7<br />
        check_command                   wmq_check_qdepth!5!10!APPLICATION.RESPONSE<br />
}</code></p>
<p><code>define service {<br />
        use                             generic-service<br />
        host_name                       mq1<br />
        service_description             server queue depth OPPOSITE-QMGR<br />
        check_period                    24x7<br />
        contact_groups                  systems-services,help_desk<br />
        notification_period             24x7<br />
        check_command                   wmq_check_qdepth!5!10!OPPOSITE-QMGR<br />
}</code></p>
<p><code>define service {<br />
        use                             generic-service<br />
        host_name                       mq1<br />
        service_description             WMQ command server<br />
        check_period                    24x7<br />
        contact_groups                  systems-services,help_desk<br />
        notification_period             24x7<br />
        check_command                   check_unix_proc!mqm!1!amqpcsea<br />
}</code></p>
<p><code>define service {<br />
        use                             generic-service<br />
        host_name                       mq1<br />
        service_description             WMQ Critical process manager<br />
        check_period                    24x7<br />
        contact_groups                  systems-services,help_desk<br />
        notification_period             24x7<br />
        check_command                   check_unix_proc!mqm!1!amqzmuc0<br />
}</code></p>
<hr/>
<p>&nbsp;</p>
<p>The strategy is to monitor qdepth and processes specific to IBM WebSphere MQ on the Websphere MQ server, along with the normal UNIX processes and disk space.  </p>
<p>&nbsp;</p>
<p>&mdash; dsm</p>
<p>&nbsp;</p>

<div class="sociable">
<span class="sociable_tagline">
share:
	<span>These icons link to social bookmarking sites where readers can share and discover new web pages.</span>
</span>
<ul>
	<li><a href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fdougmunsinger.com%2F2008%2F10%2Fhow-to-monitor-ibm-mq-from-nagios.html&amp;title=how%20to%20monitor%20ibm%20mq%20from%20nagios" title="Digg" onfocus="sociable_description_link(this, 'bodytext')" rel="nofollow" target="_blank"><img src="http://dougmunsinger.com/wp-content/plugins/sociable-zyblog-edition/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a></li>
	<li><a href="http://del.icio.us/post?url=http%3A%2F%2Fdougmunsinger.com%2F2008%2F10%2Fhow-to-monitor-ibm-mq-from-nagios.html&amp;title=how%20to%20monitor%20ibm%20mq%20from%20nagios" title="del.icio.us" rel="nofollow" target="_blank"><img src="http://dougmunsinger.com/wp-content/plugins/sociable-zyblog-edition/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li>
	<li><a href="http://www.stumbleupon.com/submit.php?url=http://dougmunsinger.com/2008/10/how-to-monitor-ibm-mq-from-nagios.html" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://dougmunsinger.com/wp-content/plugins/sociable-zyblog-edition/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a></li>
	<li><a href="http://reddit.com/submit?url=http%3A%2F%2Fdougmunsinger.com%2F2008%2F10%2Fhow-to-monitor-ibm-mq-from-nagios.html&amp;title=how%20to%20monitor%20ibm%20mq%20from%20nagios" title="Reddit" rel="nofollow" target="_blank"><img src="http://dougmunsinger.com/wp-content/plugins/sociable-zyblog-edition/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a></li>
	<li><a href="http://www.bloglines.com/sub/http://dougmunsinger.com/2008/10/how-to-monitor-ibm-mq-from-nagios.html" title="Bloglines" rel="nofollow" target="_blank"><img src="http://dougmunsinger.com/wp-content/plugins/sociable-zyblog-edition/images/bloglines.png" title="Bloglines" alt="Bloglines" class="sociable-hovers" /></a></li>
	<li><a href="mailto:?subject=how%20to%20monitor%20ibm%20mq%20from%20nagios&amp;body=http%3A%2F%2Fdougmunsinger.com%2F2008%2F10%2Fhow-to-monitor-ibm-mq-from-nagios.html" title="email" onfocus="sociable_description_link(this, 'E-mail this story to a friend!')" rel="nofollow" target="_blank"><img src="http://dougmunsinger.com/wp-content/plugins/sociable-zyblog-edition/images/email.png" title="email" alt="email" class="sociable-hovers" /></a></li>
	<li><a href="http://www.facebook.com/share.php?u=http%3A%2F%2Fdougmunsinger.com%2F2008%2F10%2Fhow-to-monitor-ibm-mq-from-nagios.html" title="Facebook" rel="nofollow" target="_blank"><img src="http://dougmunsinger.com/wp-content/plugins/sociable-zyblog-edition/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li>
	<li><a href="http://faves.com/Authoring.aspx?u=http%3A%2F%2Fdougmunsinger.com%2F2008%2F10%2Fhow-to-monitor-ibm-mq-from-nagios.html&amp;title=how%20to%20monitor%20ibm%20mq%20from%20nagios" title="Faves" rel="nofollow" target="_blank"><img src="http://dougmunsinger.com/wp-content/plugins/sociable-zyblog-edition/images/faves.png" title="Faves" alt="Faves" class="sociable-hovers" /></a></li>
	<li><a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fdougmunsinger.com%2F2008%2F10%2Fhow-to-monitor-ibm-mq-from-nagios.html&amp;title=how%20to%20monitor%20ibm%20mq%20from%20nagios&amp;source=intuitive+engineering&amp;summary=EXCERPT" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://dougmunsinger.com/wp-content/plugins/sociable-zyblog-edition/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a></li>
	<li><a href="http://www.mixx.com/submit?page_url=http%3A%2F%2Fdougmunsinger.com%2F2008%2F10%2Fhow-to-monitor-ibm-mq-from-nagios.html&amp;title=how%20to%20monitor%20ibm%20mq%20from%20nagios" title="Mixx" rel="nofollow" target="_blank"><img src="http://dougmunsinger.com/wp-content/plugins/sociable-zyblog-edition/images/mixx.png" title="Mixx" alt="Mixx" class="sociable-hovers" /></a></li>
	<li><a href="http://www.netscape.com/submit/?U=http%3A%2F%2Fdougmunsinger.com%2F2008%2F10%2Fhow-to-monitor-ibm-mq-from-nagios.html&amp;T=how%20to%20monitor%20ibm%20mq%20from%20nagios" title="Netscape" rel="nofollow" target="_blank"><img src="http://dougmunsinger.com/wp-content/plugins/sociable-zyblog-edition/images/netscape.gif" title="Netscape" alt="Netscape" class="sociable-hovers" /></a></li>
	<li><a href="http://www.newsider.de/submit.php?url=http%3A%2F%2Fdougmunsinger.com%2F2008%2F10%2Fhow-to-monitor-ibm-mq-from-nagios.html" title="Newsrider" rel="nofollow" target="_blank"><img src="http://dougmunsinger.com/wp-content/plugins/sociable-zyblog-edition/images/newsrider.png" title="Newsrider" alt="Newsrider" class="sociable-hovers" /></a></li>
	<li><a href="http://slashdot.org/bookmark.pl?title=how%20to%20monitor%20ibm%20mq%20from%20nagios&amp;url=http%3A%2F%2Fdougmunsinger.com%2F2008%2F10%2Fhow-to-monitor-ibm-mq-from-nagios.html" title="Slashdot" rel="nofollow" target="_blank"><img src="http://dougmunsinger.com/wp-content/plugins/sociable-zyblog-edition/images/slashdot.png" title="Slashdot" alt="Slashdot" class="sociable-hovers" /></a></li>
	<li><a href="http://technorati.com/faves?add=http%3A%2F%2Fdougmunsinger.com%2F2008%2F10%2Fhow-to-monitor-ibm-mq-from-nagios.html" title="Technorati" rel="nofollow" target="_blank"><img src="http://dougmunsinger.com/wp-content/plugins/sociable-zyblog-edition/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a></li>
	<li><a href="http://twitter.com/home?status=http%3A%2F%2Fdougmunsinger.com%2F2008%2F10%2Fhow-to-monitor-ibm-mq-from-nagios.html" title="TwitThis" rel="nofollow" target="_blank"><img src="http://dougmunsinger.com/wp-content/plugins/sociable-zyblog-edition/images/twitter.png" title="TwitThis" alt="TwitThis" class="sociable-hovers" /></a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://dougmunsinger.com/2008/10/how-to-monitor-ibm-mq-from-nagios.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>refreshing SSL certificates in websphere MQ</title>
		<link>http://dougmunsinger.com/2008/07/refreshing-ssl-certificates-in-websphere-mq.html</link>
		<comments>http://dougmunsinger.com/2008/07/refreshing-ssl-certificates-in-websphere-mq.html#comments</comments>
		<pubDate>Thu, 31 Jul 2008 00:54:58 +0000</pubDate>
		<dc:creator>doug</dc:creator>
				<category><![CDATA[websphere]]></category>
		<category><![CDATA[MQ]]></category>
		<category><![CDATA[runmqsc]]></category>
		<category><![CDATA[SSL]]></category>

		<guid isPermaLink="false">https://dougmunsinger.com/?p=105</guid>
		<description><![CDATA[The first project I was given when I started at Evergreen Investments involved IBM&#8217;s WebSphere MQ messaging application. I took a development instance of the application and translated that to the requirements for a production deployment of the application. It has been completely bulletproof. Set up correctly and sized appropriately, it just works. Eventually all [...]]]></description>
			<content:encoded><![CDATA[<p>The first project I was given when I started at Evergreen Investments involved IBM&#8217;s WebSphere MQ messaging application.   I took a development instance of the application and translated that to the requirements for a production deployment of the application.  </p>
<p>It has been completely bulletproof.  Set up correctly and sized appropriately, it just works. Eventually all good things come to an end, and you must maintain the service.  SSL certificates expire, and must be replaced with new certificates.  </p>
<p>In WebSphere versions prior to 6.0, you had to restart the queue manager, the local god of the application, to have the new certificate information deploy.  That was somewhat disruptive, but it ensured that the information you were using for bringing up encrypted channels of communication was the new information, not the old. </p>
<p>With version 6.0, there is a command you can run in runmqsc (the WebSphere MQ command line shell and script interface) &#8211; </p>
<p><code><br />
REFRESH SECURITY TYPE(SSL)<br />
</code></p>
<p>The same command run as </p>
<p><code><br />
REFRESH SECURITY<br />
</code></p>
<p>will touch USER security, but leave the SSL certificate information untouched and unrefreshed.  Thus leaving you with an invalid certificate in place, even though you have replaced and refreshed (you think) the information&#8230; </p>
<p>This is obvious in hindsight.  And completely baffling, until you find it, while trying to get the application to come back up after replacing an expired certificate.</p>
<p>&mdash;dsm</p>

<div class="sociable">
<span class="sociable_tagline">
share:
	<span>These icons link to social bookmarking sites where readers can share and discover new web pages.</span>
</span>
<ul>
	<li><a href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fdougmunsinger.com%2F2008%2F07%2Frefreshing-ssl-certificates-in-websphere-mq.html&amp;title=refreshing%20SSL%20certificates%20in%20websphere%20MQ" title="Digg" onfocus="sociable_description_link(this, 'bodytext')" rel="nofollow" target="_blank"><img src="http://dougmunsinger.com/wp-content/plugins/sociable-zyblog-edition/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a></li>
	<li><a href="http://del.icio.us/post?url=http%3A%2F%2Fdougmunsinger.com%2F2008%2F07%2Frefreshing-ssl-certificates-in-websphere-mq.html&amp;title=refreshing%20SSL%20certificates%20in%20websphere%20MQ" title="del.icio.us" rel="nofollow" target="_blank"><img src="http://dougmunsinger.com/wp-content/plugins/sociable-zyblog-edition/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li>
	<li><a href="http://www.stumbleupon.com/submit.php?url=http://dougmunsinger.com/2008/07/refreshing-ssl-certificates-in-websphere-mq.html" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://dougmunsinger.com/wp-content/plugins/sociable-zyblog-edition/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a></li>
	<li><a href="http://reddit.com/submit?url=http%3A%2F%2Fdougmunsinger.com%2F2008%2F07%2Frefreshing-ssl-certificates-in-websphere-mq.html&amp;title=refreshing%20SSL%20certificates%20in%20websphere%20MQ" title="Reddit" rel="nofollow" target="_blank"><img src="http://dougmunsinger.com/wp-content/plugins/sociable-zyblog-edition/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a></li>
	<li><a href="http://www.bloglines.com/sub/http://dougmunsinger.com/2008/07/refreshing-ssl-certificates-in-websphere-mq.html" title="Bloglines" rel="nofollow" target="_blank"><img src="http://dougmunsinger.com/wp-content/plugins/sociable-zyblog-edition/images/bloglines.png" title="Bloglines" alt="Bloglines" class="sociable-hovers" /></a></li>
	<li><a href="mailto:?subject=refreshing%20SSL%20certificates%20in%20websphere%20MQ&amp;body=http%3A%2F%2Fdougmunsinger.com%2F2008%2F07%2Frefreshing-ssl-certificates-in-websphere-mq.html" title="email" onfocus="sociable_description_link(this, 'E-mail this story to a friend!')" rel="nofollow" target="_blank"><img src="http://dougmunsinger.com/wp-content/plugins/sociable-zyblog-edition/images/email.png" title="email" alt="email" class="sociable-hovers" /></a></li>
	<li><a href="http://www.facebook.com/share.php?u=http%3A%2F%2Fdougmunsinger.com%2F2008%2F07%2Frefreshing-ssl-certificates-in-websphere-mq.html" title="Facebook" rel="nofollow" target="_blank"><img src="http://dougmunsinger.com/wp-content/plugins/sociable-zyblog-edition/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li>
	<li><a href="http://faves.com/Authoring.aspx?u=http%3A%2F%2Fdougmunsinger.com%2F2008%2F07%2Frefreshing-ssl-certificates-in-websphere-mq.html&amp;title=refreshing%20SSL%20certificates%20in%20websphere%20MQ" title="Faves" rel="nofollow" target="_blank"><img src="http://dougmunsinger.com/wp-content/plugins/sociable-zyblog-edition/images/faves.png" title="Faves" alt="Faves" class="sociable-hovers" /></a></li>
	<li><a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fdougmunsinger.com%2F2008%2F07%2Frefreshing-ssl-certificates-in-websphere-mq.html&amp;title=refreshing%20SSL%20certificates%20in%20websphere%20MQ&amp;source=intuitive+engineering&amp;summary=EXCERPT" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://dougmunsinger.com/wp-content/plugins/sociable-zyblog-edition/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a></li>
	<li><a href="http://www.mixx.com/submit?page_url=http%3A%2F%2Fdougmunsinger.com%2F2008%2F07%2Frefreshing-ssl-certificates-in-websphere-mq.html&amp;title=refreshing%20SSL%20certificates%20in%20websphere%20MQ" title="Mixx" rel="nofollow" target="_blank"><img src="http://dougmunsinger.com/wp-content/plugins/sociable-zyblog-edition/images/mixx.png" title="Mixx" alt="Mixx" class="sociable-hovers" /></a></li>
	<li><a href="http://www.netscape.com/submit/?U=http%3A%2F%2Fdougmunsinger.com%2F2008%2F07%2Frefreshing-ssl-certificates-in-websphere-mq.html&amp;T=refreshing%20SSL%20certificates%20in%20websphere%20MQ" title="Netscape" rel="nofollow" target="_blank"><img src="http://dougmunsinger.com/wp-content/plugins/sociable-zyblog-edition/images/netscape.gif" title="Netscape" alt="Netscape" class="sociable-hovers" /></a></li>
	<li><a href="http://www.newsider.de/submit.php?url=http%3A%2F%2Fdougmunsinger.com%2F2008%2F07%2Frefreshing-ssl-certificates-in-websphere-mq.html" title="Newsrider" rel="nofollow" target="_blank"><img src="http://dougmunsinger.com/wp-content/plugins/sociable-zyblog-edition/images/newsrider.png" title="Newsrider" alt="Newsrider" class="sociable-hovers" /></a></li>
	<li><a href="http://slashdot.org/bookmark.pl?title=refreshing%20SSL%20certificates%20in%20websphere%20MQ&amp;url=http%3A%2F%2Fdougmunsinger.com%2F2008%2F07%2Frefreshing-ssl-certificates-in-websphere-mq.html" title="Slashdot" rel="nofollow" target="_blank"><img src="http://dougmunsinger.com/wp-content/plugins/sociable-zyblog-edition/images/slashdot.png" title="Slashdot" alt="Slashdot" class="sociable-hovers" /></a></li>
	<li><a href="http://technorati.com/faves?add=http%3A%2F%2Fdougmunsinger.com%2F2008%2F07%2Frefreshing-ssl-certificates-in-websphere-mq.html" title="Technorati" rel="nofollow" target="_blank"><img src="http://dougmunsinger.com/wp-content/plugins/sociable-zyblog-edition/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a></li>
	<li><a href="http://twitter.com/home?status=http%3A%2F%2Fdougmunsinger.com%2F2008%2F07%2Frefreshing-ssl-certificates-in-websphere-mq.html" title="TwitThis" rel="nofollow" target="_blank"><img src="http://dougmunsinger.com/wp-content/plugins/sociable-zyblog-edition/images/twitter.png" title="TwitThis" alt="TwitThis" class="sociable-hovers" /></a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://dougmunsinger.com/2008/07/refreshing-ssl-certificates-in-websphere-mq.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 0.495 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2010-07-29 18:49:05 -->
