<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8670611478312494182</id><updated>2012-01-24T15:42:01.324Z</updated><category term='zfs'/><category term='temp'/><category term='sendmail.mc'/><category term='migrating'/><category term='perl'/><category term='zones'/><category term='apache_modules'/><category term='AF601A'/><category term='tomcat'/><category term='UseDNS'/><category term='general'/><category term='sendmail.cf'/><category term='OpenIndiana'/><category term='RHEL4'/><category term='KVM'/><category term='belkin'/><category term='ssh tunnel'/><category term='keygen'/><category term='sshd_config'/><category term='nfs'/><category term='LookupClientHostnames'/><category term='su'/><category term='solaris'/><category term='Console switch'/><category term='crontab'/><category term='apache'/><category term='linux'/><category term='scripting'/><category term='recovery'/><category term='HP'/><category term='router'/><category term='Redhat'/><category term='cascade'/><category term='64-bit'/><category term='4294967294'/><category term='login'/><category term='slow login'/><category term='self-signed certificate'/><category term='x11'/><category term='shared storage'/><category term='security'/><category term='openssl'/><category term='solaris 10'/><category term='ssh'/><category term='java.io.tmpdir'/><category term='putty'/><category term='refresh'/><category term='sendmail'/><category term='sshd'/><category term='cgi.pm'/><category term='misc'/><category term='directory ownership'/><category term='welcome'/><category term='unix'/><category term='imapd'/><category term='ssl'/><category term='apache-tomcat'/><category term='certificate'/><category term='Ubuntu'/><category term='-KPIC'/><category term='mod_security'/><category term='dependencies'/><title type='text'>grep answers unix</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://grepanswers.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://grepanswers.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Philip</name><uri>http://www.blogger.com/profile/17393962070577694995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>30</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8670611478312494182.post-8039577838377068073</id><published>2011-09-23T17:30:00.005+01:00</published><updated>2011-09-23T17:33:46.204+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='x11'/><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><category scheme='http://www.blogger.com/atom/ns#' term='su'/><category scheme='http://www.blogger.com/atom/ns#' term='putty'/><title type='text'>X11 tunneling, ssh and su</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;It's pretty well known that ssh can be used to tunnel X11 sessions, typically from a server to your local workstation. &amp;nbsp;This is extremely handy if you need to run an X program on a remote system on which you only have terminal/shell access. &amp;nbsp;If you're a windows user, I recommend using Putty, and you can enable X11 forwarding very simply.&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;From the initial putty menu, note the options on the left, and expand the + next to 'SSH', under the 'Connection' category:&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-kE6EF9KiqJM/TnoGpvOddUI/AAAAAAAAAHg/n4tbGNrDNsM/s1600/putty1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;img border="0" height="286" src="http://3.bp.blogspot.com/-kE6EF9KiqJM/TnoGpvOddUI/AAAAAAAAAHg/n4tbGNrDNsM/s320/putty1.jpg" width="320" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;On the next page, you should tick the 'Enable X11 forwarding' tick box:&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-iHpgQDEkmIU/TnoGr-OnctI/AAAAAAAAAHk/qGG7DZmJd2A/s1600/putty2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;img border="0" height="286" src="http://3.bp.blogspot.com/-iHpgQDEkmIU/TnoGr-OnctI/AAAAAAAAAHk/qGG7DZmJd2A/s320/putty2.jpg" width="320" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;As soon as you log into the server, you should see a message saying that a new authority file has been created:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-bf5N8IF6RLw/TnoYQG335LI/AAAAAAAAAHo/RQNxyRx5mOw/s1600/putty3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;img border="0" height="168" src="http://4.bp.blogspot.com/-bf5N8IF6RLw/TnoYQG335LI/AAAAAAAAAHo/RQNxyRx5mOw/s320/putty3.jpg" width="320" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;This has now set a magic cookie (no really) to authorise the server you have just logged into. &amp;nbsp;If you're wondering what you've just authorised - you've just authorised the server to send X windows back through the ssl session to display on your computer. &amp;nbsp;Naturally, you need an Xwin server such as Cygwin-X running on your system.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;If everything is working correctly, your session should have an environment variable (DISPLAY) set to something very similar to localhost:10.0, and if you run /usr/openwin/bin/xclock, it should appear magically on your desktop:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-1QzneZajYLI/Tnob9-PTlmI/AAAAAAAAAHw/4PzeTTtKrg0/s1600/putty4.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;img border="0" height="167" src="http://1.bp.blogspot.com/-1QzneZajYLI/Tnob9-PTlmI/AAAAAAAAAHw/4PzeTTtKrg0/s320/putty4.jpg" width="320" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;While all of this is really great and helpful in the extreme, it is covered in many places and isn't new. &amp;nbsp;What I recently worked out, and want to share, is the solution to the following two problems:&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Having logged in to a system, and set up your X11 tunneling, you lose your X11 tunnel if you:&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;1) su to another user&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;2) ssh to a new system&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Both of these are dead handy things to be able to do. &amp;nbsp;If you have to assume root privileges, for example, to run the command that generates an X session, you'll hit problem 1. &amp;nbsp;If you need to switch to a user on a different system, because you don't have a direct connection to that server, you'll hit problem 2.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;u&gt;1 - How to maintain your X11 tunnel while su-ing to a new user&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;a) log in to your system as described above&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;b) check your environment DISPLAY variable:&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;-bash-3.00$ echo $DISPLAY&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;localhost:10.0&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;c) Discover what your session magic cookie is:&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;-bash-3.00$ /usr/openwin/bin/xauth list&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;hostname/unix:10 &amp;nbsp;MIT-MAGIC-COOKIE-1 &amp;nbsp;fca50d4504788a86d4b680f3eda4628e&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;d) su to new user:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;-bash-3.00$ su -&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Password:&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;e) set your DISPLAY variable:&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;root@hostname # DISPLAY=localhost:10.0&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;root@hostname # export DISPLAY&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;f) set your magic cookie:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;-bash-3.00$ /usr/openwin/bin/xauth add&amp;nbsp;hostname/unix:10 &amp;nbsp;MIT-MAGIC-COOKIE-1 &amp;nbsp;fca50d4504788a86d4b680f3eda4628e&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Congratulations - you should now be authorised again to send X11 commands to your local machine.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;u&gt;2 - How to maintain your X11 tunnel while ssh-ing to a new system&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;This is really easy - either of the following ssh commands works.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;ssh -o "ForwardX11 yes" username@remotesystem&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;or&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;ssh -X -A username@remotesystem&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670611478312494182-8039577838377068073?l=grepanswers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grepanswers.blogspot.com/feeds/8039577838377068073/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670611478312494182&amp;postID=8039577838377068073' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/8039577838377068073'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/8039577838377068073'/><link rel='alternate' type='text/html' href='http://grepanswers.blogspot.com/2011/09/x11-tunneling-ssh-and-su.html' title='X11 tunneling, ssh and su'/><author><name>Philip</name><uri>http://www.blogger.com/profile/17393962070577694995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-kE6EF9KiqJM/TnoGpvOddUI/AAAAAAAAAHg/n4tbGNrDNsM/s72-c/putty1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670611478312494182.post-162778002584434949</id><published>2011-08-01T19:00:00.004+01:00</published><updated>2011-08-05T11:59:36.238+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='slow login'/><category scheme='http://www.blogger.com/atom/ns#' term='login'/><category scheme='http://www.blogger.com/atom/ns#' term='solaris 10'/><category scheme='http://www.blogger.com/atom/ns#' term='sshd'/><category scheme='http://www.blogger.com/atom/ns#' term='LookupClientHostnames'/><category scheme='http://www.blogger.com/atom/ns#' term='sshd_config'/><category scheme='http://www.blogger.com/atom/ns#' term='UseDNS'/><category scheme='http://www.blogger.com/atom/ns#' term='solaris'/><title type='text'>Very slow log in to Solaris Server</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;Error keywords seen:&lt;/b&gt;&amp;nbsp; None - just exceptionally slow login&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;Operating System: &lt;/b&gt;Solaris variants&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;Software:&lt;/b&gt; default ssh daemon&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;Keywords:&amp;nbsp; &lt;/b&gt;solaris stop suppress reverse dns lookup ssh&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;I've googled many times to find the answer to this one, and read through many man pages.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;It's very easy to discover that slow log ins are almost always due to sshd trying to do an nslookup on the login client.&amp;nbsp; This is a perfectly reasonable security measure, but if the lookup fails it can take a while to timeout, giving the impression that the login is very slow.&amp;nbsp; In Linux, you change sshd_config and add 'UseDNS no' - this I found recommended many times.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;In Solaris, the answer is just as easy, though harder to find:&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;Add the following line to /etc/ssh/sshd_config:&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;LookupClientHostnames=no&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;Restart sshd:&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;svcadm restart ssh&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;Check that ssh is running okay - do this &lt;i&gt;before&lt;/i&gt; you log out:&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;svcs -l ssh&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;If sshd is in maintenance mode, revert your changes and restart ssh:&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;svcadm clear ssh&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;Check your change for a typo, and debug as usual.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;You should now be able to log in much faster.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670611478312494182-162778002584434949?l=grepanswers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grepanswers.blogspot.com/feeds/162778002584434949/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670611478312494182&amp;postID=162778002584434949' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/162778002584434949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/162778002584434949'/><link rel='alternate' type='text/html' href='http://grepanswers.blogspot.com/2011/08/very-slow-log-in-to-solaris-server.html' title='Very slow log in to Solaris Server'/><author><name>Philip</name><uri>http://www.blogger.com/profile/17393962070577694995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670611478312494182.post-8605199914546703789</id><published>2011-04-10T18:16:00.002+01:00</published><updated>2011-08-05T12:01:48.319+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='4294967294'/><category scheme='http://www.blogger.com/atom/ns#' term='nfs'/><category scheme='http://www.blogger.com/atom/ns#' term='directory ownership'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='solaris'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenIndiana'/><title type='text'>Solaris/OpenIndiana NFS server to Ubuntu NFS host - 4294967294 problem</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;b&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Error keywords seen:&lt;/span&gt;&lt;/b&gt;&amp;nbsp; &lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;User and Group set to 4294967294 instead of UID/GID expected &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;Operating System: &lt;/b&gt;Open Indiana oi_148 (Solaris) and Ubuntu 11.04 (Natty Narwhal)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;Software:&lt;/b&gt; NFS v4&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;When mounting an nfs shared directory from an OpenIndiana home server, the directory ownership was set to 4294967294:4294967294, despite the ownership on the server being 1000:1000, and the equivalent UID / GID being set up on the client machine.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;The solution is to edit the config file /etc/default/nfs-common - the two lines required are:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;NEED_STATD="no"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;NEED_IDMAPD="yes"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;This is enough to change the reported ownership from 4294967294 to 'nobody:nogroup' - which is progress, of a sort.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Our next requirement is to make sure that the nfs client and the nfs server are both using the same domain name.&amp;nbsp; On the client, change /etc/idmapd.conf so that the domain parameter is correct - in my case, 'homenetwork'.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Domain = homenetwork&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Secondly, on the server, make sure that the domainname is correctly set.&amp;nbsp; As this is running a Solaris(-based) OS, it's very easy - just create or edit the contents of /etc/defaultdomain so that it contains (nothing more than) the correct domain:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;homenetwork&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;And you're done - reboot both sides for luck, and everything should now appear as you expect. &lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670611478312494182-8605199914546703789?l=grepanswers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grepanswers.blogspot.com/feeds/8605199914546703789/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670611478312494182&amp;postID=8605199914546703789' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/8605199914546703789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/8605199914546703789'/><link rel='alternate' type='text/html' href='http://grepanswers.blogspot.com/2011/04/solarisopenindiana-nfs-server-to-ubuntu.html' title='Solaris/OpenIndiana NFS server to Ubuntu NFS host - 4294967294 problem'/><author><name>Philip</name><uri>http://www.blogger.com/profile/17393962070577694995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670611478312494182.post-1404644368831959055</id><published>2011-03-07T10:43:00.003Z</published><updated>2011-08-05T12:02:51.556+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='shared storage'/><category scheme='http://www.blogger.com/atom/ns#' term='solaris 10'/><category scheme='http://www.blogger.com/atom/ns#' term='zones'/><title type='text'>Configure a lofs (LOopback virtual FileSystem) shared area between zones</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;Operating System: &lt;/b&gt;Solaris 10 &amp;amp; variants&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Create area to be shared on global zone, e.g.&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; /share&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;mkdir /share&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Configure the zones to use the shared area:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# zonecfg -z zone1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;zonecfg:zone1&amp;gt; add fs&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;zonecfg:zone1&amp;gt; set dir=/share&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;zonecfg:zone1&amp;gt; set special=/share/sharex&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;zonecfg:zone1&amp;gt; set type=lofs&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;zonecfg:zone1&amp;gt; end&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;zonecfg:zone1&amp;gt; verify&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;zonecfg:zone1&amp;gt; commit&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;zonecfg:zone1&amp;gt; exit&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# zonecfg -z zone2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;zonecfg:zone2&amp;gt; add fs&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;zonecfg:zone2&amp;gt; set dir=/share&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;zonecfg:zone2&amp;gt; set special=/share/sharex&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;zonecfg:zone2&amp;gt; set type=lofs&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;zonecfg:zone2&amp;gt; end&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;zonecfg:zone2&amp;gt; verify&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;zonecfg:zone2&amp;gt; commit&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;zonecfg:zone2&amp;gt; exit&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Reboot both zones&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# zoneadm -z zone1 reboot&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# zoneadm -z zone2 reboot&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;The filesystems will now be available and fully writeable for both zones.&amp;nbsp; There is no limit to the number of zones that can share the filesystem.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670611478312494182-1404644368831959055?l=grepanswers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grepanswers.blogspot.com/feeds/1404644368831959055/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670611478312494182&amp;postID=1404644368831959055' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/1404644368831959055'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/1404644368831959055'/><link rel='alternate' type='text/html' href='http://grepanswers.blogspot.com/2011/03/configure-lofs-loopback-virtual.html' title='Configure a lofs (LOopback virtual FileSystem) shared area between zones'/><author><name>Philip</name><uri>http://www.blogger.com/profile/17393962070577694995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670611478312494182.post-6333856048027263009</id><published>2011-02-10T13:49:00.001Z</published><updated>2011-08-05T12:03:05.569+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><title type='text'>Perl: how to inherit and modify the constructor of parent class</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;This reminder post will be by example, but basically talks about how to inherit a constructor from a parent class, then modify it slightly.&amp;nbsp; It's also a good case for remembering &lt;a href="http://grepanswers.blogspot.com/2008/11/what-this-is-and-what-this-isnt.html"&gt;the reason for this blog&lt;/a&gt; - which is to serve as assistance to my memory, and isn't in any way a guidebook or even set of suggestions for how to do things.&amp;nbsp; This is particularly true of my forays into perl hackery.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Right then.&amp;nbsp; For this example, we'll start with two simple classes, "Parent" and "Child".&amp;nbsp; The inheritance relationship works exactly as you'd expect from the names:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Code for inheritance1.pl&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#!/usr/bin/perl -w&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;use strict;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#--------------------------------&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;package Parent;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sub new {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; my $class=shift;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; my $string1=shift;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print("1) Called $class constructor with: " . $string1 . "\n");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; my $self={&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; string1 =&amp;gt; $string1,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bless($self, $class);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return $self;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#--------------------------------&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;package Child;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;our @ISA='Parent';&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sub new {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; my $class=shift;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; my $string1=shift;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; my $self=Parent-&amp;gt;new($string1);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print("2) Called $class constructor with: " . $string1 . "\n");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bless($self,$class);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return $self;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#--------------------------------&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;my $testObject1=Parent-&amp;gt;new("Parent's String");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;my $testObject2=Child-&amp;gt;new("Child's String");&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;print("Parent object has stored: ",$testObject1-&amp;gt;{string1},"\n");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;print("Child object has stored: ",$testObject2-&amp;gt;{string1},"\n");&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;exit 0;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;This produces the output: &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1) Called Parent constructor with: Parent's String&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1) Called Parent constructor with: Child's String&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2) Called Child constructor with: Child's String&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Parent object has stored: Parent's String&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Child object has stored: Child's String&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;The line of interest here is:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; my $self=Parent-&amp;gt;new($string1);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Here the constructor for Child inherits the properties of the constructor for Parent.&amp;nbsp; As a result, whenever we call the constructor for Child, we see that code from the parent constructor is run.&amp;nbsp; Additional code from the Child constructor is also run.&amp;nbsp; However we've really done nothing useful here, as we haven't added any great extra feature to the Child constructor.&amp;nbsp; So what if we want to store a new parameter into our new object?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Code for inheritance2.pl&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#!/usr/bin/perl -w&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;use strict;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#--------------------------------&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;package Parent;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sub new {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; my $class=shift;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; my $string1=shift;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print("1) Called $class constructor with: " . $string1 . "\n");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; my $self={&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; string1 =&amp;gt; $string1,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bless($self, $class);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return $self;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#--------------------------------&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;package Child;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;our @ISA='Parent';&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sub new {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; my $class=shift;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; my $string1=shift;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; my $string2=shift;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; my $self=Parent-&amp;gt;new($string1);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print("2) Called $class constructor with: " . $string2 . "\n");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $self={&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; string2 =&amp;gt; $string2,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bless($self,$class);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return $self;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#--------------------------------&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;my $testObject1=Parent-&amp;gt;new("Parent's String");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;my $testObject2=Child-&amp;gt;new("Child's 1st String","Child's 2nd String");&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;print("Parent object has stored: ",$testObject1-&amp;gt;{string1},"\n");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;print("Child object has stored: ",$testObject2-&amp;gt;{string1},"\n");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;print("Child object has stored: ",$testObject2-&amp;gt;{string2},"\n");&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;exit 0;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;This produces the output: &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1) Called Parent constructor with: Parent's String&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1) Called Parent constructor with: Child's 1st String&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2) Called Child constructor with: Child's 2nd String&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Parent object has stored: Parent's String&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Use of uninitialized value in print at ./inheritance2.pl line 47.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Child object has stored: &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Child object has stored: Child's 2nd String&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;That didn't work at all!&amp;nbsp; That shouldn't be too much of a surprise, really, as we've overwritten the declaration of the $self hash.&amp;nbsp; We could expand it to include everything that the Parent class has, and in this case, it wouldn't take a lot of extra typing, but it's hardly making use of our Object Oriented design, and if there was lots of exciting configuration defined by the $self declaration, we'd lose it all, or have to recreate it.&amp;nbsp; Better is:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Code for inheritance3.pl&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#!/usr/bin/perl -w&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;use strict;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#--------------------------------&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;package Parent;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sub new {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; my $class=shift;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; my $string1=shift;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print("1) Called $class constructor with: " . $string1 . "\n");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; my $self={&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; string1 =&amp;gt; $string1,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bless($self, $class);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return $self;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#--------------------------------&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;package Child;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;our @ISA='Parent';&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sub new {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; my $class=shift;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; my $string1=shift;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; my $string2=shift;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; my $self=Parent-&amp;gt;new($string1);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $self-&amp;gt;{string2} = $string2;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print("2) Called $class constructor with: " . $string2 . "\n");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bless($self,$class);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return $self;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#--------------------------------&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;my $testObject1=Parent-&amp;gt;new("Parent's String");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;my $testObject2=Child-&amp;gt;new("Child's 1st String","Child's 2nd String");&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;print("Parent object has stored: ",$testObject1-&amp;gt;{string1},"\n");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;print("Child object has stored: ",$testObject2-&amp;gt;{string1},"\n");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;print("Child object has stored: ",$testObject2-&amp;gt;{string2},"\n");&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;exit 0;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;This produces the output: &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1) Called Parent constructor with: Parent's String&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1) Called Parent constructor with: Child's 1st String&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2) Called Child constructor with: Child's 2nd String&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Parent object has stored: Parent's String&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Child object has stored: Child's 1st String&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Child object has stored: Child's 2nd String&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;And that's just as we expect.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670611478312494182-6333856048027263009?l=grepanswers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grepanswers.blogspot.com/feeds/6333856048027263009/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670611478312494182&amp;postID=6333856048027263009' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/6333856048027263009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/6333856048027263009'/><link rel='alternate' type='text/html' href='http://grepanswers.blogspot.com/2011/02/perl-how-to-inherit-and-modify.html' title='Perl: how to inherit and modify the constructor of parent class'/><author><name>Philip</name><uri>http://www.blogger.com/profile/17393962070577694995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670611478312494182.post-3409591527204836387</id><published>2011-02-09T09:54:00.001Z</published><updated>2011-08-05T12:03:35.770+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dependencies'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenIndiana'/><title type='text'>CPAN problem with Compress::Zlib</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;Perl Version:&amp;nbsp; &lt;/b&gt;5.8.4&lt;span style="font-weight: bold;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-weight: bold;"&gt;Operating System:&lt;/span&gt; OpenIndiana oi_148&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-weight: bold;"&gt;Error Message(s) seen:&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Undefined subroutine &amp;amp;Compress::Zlib::gzopen called at /usr/perl5/5.8.4/lib/CPAN/Tarzip.pm line 122&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;This error showed up while installing a module called Config::Crontab.&amp;nbsp; It potentially could have caused problems with installing any module though, as I'm pretty sure that it's down to missing dependencies for Compress::Zlib.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;The error presented itself as follows:&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;cpan[2]&amp;gt; install Config::Crontab&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Running install for module 'Config::Crontab'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Running make for S/SC/SCOTTW/Config-Crontab-1.30.tar.gz&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CPAN: LWP::UserAgent loaded ok (v5.835)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Fetching with LWP:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; ftp://mirror.ox.ac.uk/sites/www.cpan.org/authors/id/S/SC/SCOTTW/Config-Crontab-1.30.tar.gz&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CPAN: Digest::SHA loaded ok (v5.50)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Fetching with LWP:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; ftp://mirror.ox.ac.uk/sites/www.cpan.org/authors/id/S/SC/SCOTTW/CHECKSUMS&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Catching error: "Undefined subroutine &amp;amp;Compress::Zlib::gzopen called at /usr/perl5/5.8.4/lib/CPAN/Tarzip.pm line 122.\cJ" at /usr/perl5/5.8.4/lib/CPAN.pm line 391&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CPAN::shell() called at -e line 1&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;As this suggests a problem with Compress::Zlib, I tried to update it:&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;cpan[3]&amp;gt; install Compress::Zlib&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Compress::Zlib is up to date (2.033).j&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;The solution was to remove Compress::Zlib and reinstall it, which then picked up missing dependencies and installed them:&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;root@ph_opensolaris:/root# ls /usr/perl5/site_perl/5.8.4/Compress/&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Zlib.pm&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;root@ph_opensolaris:/root# rm /usr/perl5/site_perl/5.8.4/Compress/Zlib.pm&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;cpan[1]&amp;gt; install Compress::Zlib&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670611478312494182-3409591527204836387?l=grepanswers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grepanswers.blogspot.com/feeds/3409591527204836387/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670611478312494182&amp;postID=3409591527204836387' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/3409591527204836387'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/3409591527204836387'/><link rel='alternate' type='text/html' href='http://grepanswers.blogspot.com/2011/02/cpan-problem-with-compresszlib.html' title='CPAN problem with Compress::Zlib'/><author><name>Philip</name><uri>http://www.blogger.com/profile/17393962070577694995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670611478312494182.post-5212836888514674796</id><published>2011-02-09T09:20:00.002Z</published><updated>2011-08-05T12:04:03.051+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='-KPIC'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenIndiana'/><title type='text'>Problems using CPAN / Perl Modules with OpenSolaris (&amp; OpenIndiana)</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-weight: bold;"&gt;Perl version:&lt;/span&gt; 5.8.4 &lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Operating System:&lt;/span&gt; OpenIndiana oi_148 (I imagine that OpenSolaris also sees these problems)&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-weight: bold;"&gt;Error Message(s) seen: &amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;cc: unrecognized option `-KPIC'&lt;br /&gt;cc: language ildoff not recognized&lt;br /&gt;cc: SHA.c: linker input file unused because linking not done&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;[...] &lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;cc: SHA.o: No such file or directory&lt;br /&gt;cc: no input files&lt;/div&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Make had returned bad status, install seems impossible&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;The key errors here are the 'unrecognised option' and 'language not recognised' messages, which are coming from cc.&amp;nbsp; cc on OpenIndiana is a link from /usr/gnu/bin/cc to /usr/sfw/bin/gcc - and gcc is not recognising some of the flags that are passed to it.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;These are specified in this file:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;/usr/perl5/5.8.4/lib/i86pc-solaris-64int/Config.pm&lt;/div&gt;&lt;br /&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;by the lines:&lt;/div&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;cccdlflags='-KPIC'&lt;/div&gt;&lt;br /&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;and,&lt;/div&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;optimize='-xO3 -xspace -xildoff'&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;To solve the problem, we need to remove (all) the offending entries, so that these two lines read:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;cccdlflags=''&lt;/div&gt;&lt;br /&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;and,&lt;/div&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;optimize=''&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670611478312494182-5212836888514674796?l=grepanswers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grepanswers.blogspot.com/feeds/5212836888514674796/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670611478312494182&amp;postID=5212836888514674796' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/5212836888514674796'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/5212836888514674796'/><link rel='alternate' type='text/html' href='http://grepanswers.blogspot.com/2011/02/problems-using-cpan-perl-modules-with.html' title='Problems using CPAN / Perl Modules with OpenSolaris (&amp; OpenIndiana)'/><author><name>Philip</name><uri>http://www.blogger.com/profile/17393962070577694995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670611478312494182.post-3560576030601828225</id><published>2010-10-27T10:40:00.004+01:00</published><updated>2010-10-27T10:54:09.068+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='solaris 10'/><category scheme='http://www.blogger.com/atom/ns#' term='zfs'/><category scheme='http://www.blogger.com/atom/ns#' term='migrating'/><category scheme='http://www.blogger.com/atom/ns#' term='zones'/><category scheme='http://www.blogger.com/atom/ns#' term='solaris'/><title type='text'>Migrating a zone between two global hosts</title><content type='html'>&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;One feature of Solaris zones is the ability to migrate a non-global zone from one global host to another.  In the case of zones built on zfs filesystems, this can be done as follows.  (If you're using UFS, substitute tar commands for the zfs commands).&lt;br /&gt;&lt;br /&gt;The rationale for this move is that the zone has an interface on VLAN101, but needs a second interface on VLAN102.  The global host it is currently attached to (mars) does not have an interface on VLAN102.  Another global host (venus) has interfaces on both VLANs, and is therefore an appropriate (in fact the only) candidate for receiving the zone.&lt;br /&gt;&lt;br /&gt;Global1=mars&lt;br /&gt;Global2=venus&lt;br /&gt;zone=scorpio&lt;br /&gt;&lt;br /&gt;First, let's check the Solaris 10 release level on each box.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;(cat /etc/release)&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;mars: Solaris 10 10/08 s10s_u6wos_07b SPARC&lt;br /&gt;venus: Solaris 10 10/09 s10s_u8wos_08a SPARC&lt;br /&gt;&lt;br /&gt;And architecture:&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;(uname -m)&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;mars: sun4v&lt;br /&gt;venus: sun4v&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Moving from a lower release to a higher one will certainly involve some packages being upgraded, but Solaris will handle most of that automatically.  Hopefully.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So, first, let's halt the zone and detach it:&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;mars# zoneadm -z scorpio halt&lt;br /&gt;mars# zoneadm -z scorpio detach&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;The zone is now ready for transfer, which we will do with the convenient zfs commands available.  If you are not using zfs, tar and ssh will work just as well.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;First we'll take a snapshot of the zone filesystem:&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;mars# zfs snapshot -r rootpool/zones/scorpio@mars&lt;/div&gt;&lt;br /&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;We also have a zfs dataset allocated to the zone, so we'll snapshot that too:&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;mars# zfs snapshot -r datapool/zones/scorpio@mars&lt;/div&gt;&lt;br /&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;Just quickly check those snapshots have been taken:&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;mars# zfs list -t snapshot|grep scorpio&lt;br /&gt;rootpool/zones/scorpio@mars&lt;br /&gt;datapool/zones/scorpio@mars&lt;br /&gt;datapool/zones/scorpio/zonedata@mars&lt;br /&gt;datapool/zones/scorpio/zonedata/opt@mars&lt;/div&gt;&lt;br /&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;Great.  Now for sending them.  Firstly, we'll need to allow a root login (temporarily) on venus:&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;venus# vi /etc/ssh/sshd_config&lt;br /&gt;change&lt;br /&gt;PermitRootLogin no&lt;br /&gt;to&lt;br /&gt;PermitRootLogin yes&lt;br /&gt;venus# svcadm restart ssh:default&lt;/div&gt;&lt;br /&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;let's send them:&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;mars# zfs send rootpool/zones/scorpio@mars | ssh root@venus "zfs recv rootpool/zones/scorpio"&lt;br /&gt;Password:&lt;br /&gt;mars# zfs send datapool/zones/scorpio/zonedata@mars | ssh root@venus "zfs recv rootpool/zones/scorpio/zonedata"&lt;br /&gt;Password:&lt;br /&gt;mars# zfs send datapool/zones/scorpio/zonedata/opt@mars | ssh root@venus "zfs recv rootpool/zones/scorpio/zonedata/opt"&lt;br /&gt;Password:&lt;/div&gt;&lt;br /&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;Note that they're being received to the rootpool on venus, as it does not have a datapool configured.&lt;br /&gt;&lt;br /&gt;Obviously now change the root login permission back to 'no':&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;venus# vi /etc/ssh/sshd_config&lt;br /&gt;change&lt;br /&gt;PermitRootLogin yes&lt;br /&gt;to&lt;br /&gt;PermitRootLogin no&lt;br /&gt;venus# svcadm restart ssh:default&lt;/div&gt;&lt;br /&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;Now the datasets are transferred, we can attach the detached zone to the new global host.  This is done with zonecfg, as with creating a new zone, but using create -a to specify that we are attaching a zone.&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;venus# zonecfg -z scorpio&lt;br /&gt;scorpio: No such zone configured&lt;br /&gt;Use 'create' to begin configuring a new zone.&lt;br /&gt;zonecfg:scorpio; create -a /zones/scorpio&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;Now let's check that has imported all the zone config:&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;zonecfg:scorpio; info&lt;br /&gt;zonename: scorpio&lt;br /&gt;zonepath: /zones/scorpio&lt;br /&gt;brand: native&lt;br /&gt;autoboot: true&lt;br /&gt;bootargs: &lt;br /&gt;pool: &lt;br /&gt;limitpriv: &lt;br /&gt;scheduling-class: FSS&lt;br /&gt;ip-type: shared&lt;br /&gt;[cpu-shares: 1]&lt;br /&gt;inherit-pkg-dir:&lt;br /&gt;dir: /lib&lt;br /&gt;inherit-pkg-dir:&lt;br /&gt;dir: /platform&lt;br /&gt;inherit-pkg-dir:&lt;br /&gt;dir: /sbin&lt;br /&gt;inherit-pkg-dir:&lt;br /&gt;dir: /usr&lt;br /&gt;net:&lt;br /&gt;address: 10.278.28.35&lt;br /&gt;physical: e1000g101001&lt;br /&gt;defrouter not specified&lt;br /&gt;capped-memory:&lt;br /&gt;physical: 4G&lt;br /&gt;[swap: 4G]&lt;br /&gt;dataset:&lt;br /&gt;name: datapool/zones/scorpio/zonedata&lt;br /&gt;rctl:&lt;br /&gt;name: zone.max-swap&lt;br /&gt;value: (priv=privileged,limit=2147483648,action=deny)&lt;br /&gt;rctl:&lt;br /&gt;name: zone.cpu-shares&lt;br /&gt;value: (priv=privileged,limit=1,action=none)&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;We'll need to make some changes here, as the zfs dataset is no longer part of datapool, but rootpool, because the interface on VLAN 101 is named differently on venus, and because we need the zone to have a new interface on VLAN 102.&lt;br /&gt;&lt;br /&gt;Change interface name:&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;zonecfg:scorpio; select net address=10.278.28.35&lt;br /&gt;zonecfg:scorpio:net; info&lt;br /&gt;net:&lt;br /&gt;address: 10.278.28.35&lt;br /&gt;physical: e1000g101001&lt;br /&gt;defrouter not specified&lt;br /&gt;zonecfg:scorpio:net; set physical=aggr101001&lt;br /&gt;zonecfg:scorpio:net; end&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;Add new interface:&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;zonecfg:scorpio; add net&lt;br /&gt;zonecfg:scorpio:net; set address=10.278.38.35&lt;br /&gt;zonecfg:scorpio:net; set physical=aggr102001&lt;br /&gt;zonecfg:scorpio:net; end&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;Change dataset name:&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;zonecfg:scorpio:dataset; set dataset rootpool/zones/scorpio/zonedata/opt@mars&lt;br /&gt;zonecfg:scorpio:dataset; set name=rootpool/zones/scorpio/zonedata/opt&lt;br /&gt;zonecfg:scorpio:dataset; end&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;Commit these changes and exit:&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;zonecfg:scorpio; commit&lt;br /&gt;zonecfg:scorpio; exit&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;The zone is now configured and ready to be attached.  But (as we read in the zoneadm manpages):&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;By default, zoneadm checks package and patch  levels  on&lt;br /&gt;the  machine to which the zone is to be attached. If the&lt;br /&gt;packages/patches that the zone depends on from the  glo-&lt;br /&gt;bal zone are different (have different revision numbers)&lt;br /&gt;from  the  dependent  packages/patches  on  the   source&lt;br /&gt;machine,  zoneadm  reports  these conflicts and does not&lt;br /&gt;perform the attach.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;Adding a '-u' flag tells Solaris to attempt to upgrade any packages/patches at a lower version in the new zone, though it cannot downgrade packages/patches.&lt;br /&gt;&lt;br /&gt;Running without '-u' gives you a long list of package and patch inconsistencies, as we are moving from update 6 to update 8.&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;root@venus# zoneadm -z scorpio attach -u&lt;br /&gt;zoneadm: zone 'scorpio': ERROR: attempt to downgrade package SUNWlucfg, the source had patch 121430-43 but this system only has 121430-42&lt;br /&gt;zoneadm: zone 'scorpio': ERROR: attempt to downgrade package SUNWlur, the source had patch 121430-43 but this system only has 121430-42&lt;br /&gt;zoneadm: zone 'scorpio': ERROR: attempt to downgrade package SUNWluu, the source had patch 121430-43 but this system only has 121430-42&lt;br /&gt;zoneadm: zone 'scorpio': ERROR: attempt to downgrade package SUNWservicetagr 1.1.4,REV=2008.04.25.09.06 to version 1.0,REV=2007.05.21.20.36&lt;br /&gt;zoneadm: zone 'scorpio': ERROR: attempt to downgrade package SUNWservicetagu 1.1.4,REV=2008.04.25.09.06 to version 1.0,REV=2007.05.21.20.36&lt;br /&gt;zoneadm: zone 'scorpio': ERROR: attempt to downgrade package SUNWstosreg 1.1.4,REV=2008.04.25.09.06 to version 1.0,REV=2007.05.21.20.36&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;Somewhere along the line, someone has upgraded these packages, and patch 121430 on the u6 box, and they are at a higher level on the zone than they are on the new target global_host.&lt;br /&gt;&lt;br /&gt;If this happens to you, it's likely that you'll have a completely different set of patches and packages, and you should proceed accordingly.  Here, the Services Tools Bundle has been installed, and the aforementioned patch 121430.  I downloaded and applied these to venus.&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# zoneadm -z scorpio attach -u                            &lt;br /&gt;Getting the list of files to remove&lt;br /&gt;Removing 326 files&lt;br /&gt;Remove 24 of 24 packages&lt;br /&gt;Installing 189 files&lt;br /&gt;Add 15 of 15 packages&lt;br /&gt;Updating editable files&lt;br /&gt;The file  within the zone contains a log of the zone update.&lt;br /&gt;&lt;br /&gt;# zoneadm list -iv | grep scorpio&lt;br /&gt;- scorpio installed /zones/scorpio  native shared&lt;br /&gt;&lt;br /&gt;# zoneadm -z scorpio boot&lt;br /&gt;# zoneadm list -iv | grep scorpio&lt;br /&gt;81 scorpio running /zones/scorpio  native shared&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;Success!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670611478312494182-3560576030601828225?l=grepanswers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grepanswers.blogspot.com/feeds/3560576030601828225/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670611478312494182&amp;postID=3560576030601828225' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/3560576030601828225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/3560576030601828225'/><link rel='alternate' type='text/html' href='http://grepanswers.blogspot.com/2010/10/migrating-zone-between-two-global-hosts.html' title='Migrating a zone between two global hosts'/><author><name>Philip</name><uri>http://www.blogger.com/profile/17393962070577694995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670611478312494182.post-9110430214361225730</id><published>2010-10-26T17:37:00.003+01:00</published><updated>2010-11-11T15:03:13.318Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='temp'/><category scheme='http://www.blogger.com/atom/ns#' term='java.io.tmpdir'/><category scheme='http://www.blogger.com/atom/ns#' term='apache-tomcat'/><category scheme='http://www.blogger.com/atom/ns#' term='tomcat'/><title type='text'>Java /temp directory - set in catalina.properties</title><content type='html'>&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;Error keywords seen:&lt;/b&gt;  &lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;javax.imageio.IIOException: Can't create cache file!&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;java.io.IOException: No such file or directory&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;Operating System:&lt;/b&gt; Solaris 10&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;Software:&lt;/b&gt; Tomcat (/tcServer)&lt;/div&gt;&lt;br /&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;Customers complained that they could not use an image upload feature of the site.  The application logs were filled with the following error:&lt;/div&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;javax.imageio.IIOException: Can't create cache file!&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;at javax.imageio.ImageIO.createImageInputStream(ImageIO.java:335)&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;at javax.imageio.ImageIO.read(ImageIO.java:1325)&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;at uk.co.site.utils.ImageUtility.resizeImage(ImageUtility.java:24)&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;at uk.co.site.utils.ImageUtility.resizeImage(ImageUtility.java:19)&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;...&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;at org.springframework.web.servlet.mvc.SimpleFormController.processFormSubmission(SimpleFormController.java:267)&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;...&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;...&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Caused by: java.io.IOException: No such file or directory&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;at java.io.UnixFileSystem.createFileExclusively(Native Method)&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;at java.io.File.checkAndCreate(File.java:1704)&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;at java.io.File.createTempFile(File.java:1792)&lt;/div&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;at javax.imageio.stream.FileCacheImageInputStream.&lt;/span&gt;&lt;init&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;(FileCacheImageInputStream.java:84)&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;         at com.sun.imageio.spi.InputStreamImageInputStreamSpi.createInputStreamInstance(InputStreamImageInputStreamSpi.java:51)&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;         at javax.imageio.ImageIO.createImageInputStream(ImageIO.java:331)&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;   ...&lt;/span&gt;&lt;/init&gt;&lt;br /&gt;&lt;init&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;/init&gt;&lt;br /&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;This is telling us that tomcat can't write to its temporary directory.  Tomcat writes to this directory when it needs to write out transient temporary files - here, while resizing an image.  &lt;br /&gt;&lt;br /&gt;The temporary directory is by [catalina_base]/temp by default - which is not always created on install.  Therefore, 99 times out of 100, the thing to do is create [catalina_base]/temp, and check that the tomcat user has permissions to write to it.&lt;br /&gt;&lt;br /&gt;When I first saw this problem, it was the 1 time out of 100 where something else was going on.  The location of the temporary directory can be overridden - normally by specifying a JVM argument in setenv.sh:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;-Djava.io.tmpdir=[some_location]&lt;/span&gt;&lt;somelocation&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; (Onto APPLICATION_OPTS)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When I checked setenv.sh (and the arguments of the running process too) - java.io.tmpdir was set as expected.  So what was going on?  The answer lay in catalina.properties - it is also possible to override the directory structure here, and this takes precedence over the JVM arguments (something I found surprising).  It is set by:&lt;br /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; tomcat/conf/catalina.properties:&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; java.io.tmpdir=[some_location]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Editing this and restarting is the only way to redirect the temporary files in this case.&lt;/somelocation&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670611478312494182-9110430214361225730?l=grepanswers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grepanswers.blogspot.com/feeds/9110430214361225730/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670611478312494182&amp;postID=9110430214361225730' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/9110430214361225730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/9110430214361225730'/><link rel='alternate' type='text/html' href='http://grepanswers.blogspot.com/2010/10/error-keywords-seen-javax.html' title='Java /temp directory - set in catalina.properties'/><author><name>Philip</name><uri>http://www.blogger.com/profile/17393962070577694995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670611478312494182.post-370370538701055124</id><published>2010-09-02T09:20:00.005+01:00</published><updated>2011-02-21T15:42:49.701Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='ssh tunnel'/><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><category scheme='http://www.blogger.com/atom/ns#' term='scripting'/><title type='text'>transferring files across firewalls / piping through ssh</title><content type='html'>&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;Operating System:&amp;nbsp; &lt;/b&gt;All Unix variants&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;Dependencies/assumptions:&amp;nbsp; &lt;/b&gt;Presence of gzip/gunzip&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;Problem:&amp;nbsp; &lt;/b&gt;&amp;nbsp;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;transferring files across firewalls / &lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;transferring files using ssh tunneling&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;A problem issue in a tiered, firewalled network architecure, is how to transfer files, especially large files, between servers in different parts of the network.&amp;nbsp; There are lots of ways to do this - get your friendly network administrator to open up a temporary hole in the firewall, connect up a cable between the two servers, and transfer that way, etc.&amp;nbsp; Potentially, however, this will break your security procedures, or it might be impossible to get physical access, or your network administrator may not be available, or going through the request process would be too slow, and so on.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;It's quite usual, however, for the two networks to be administered via ssh from a third network, or sometimes single ip address.&amp;nbsp; They cannot speak to each other, but this third location can speak to them both.&amp;nbsp; So the usual sidestep to the problem is to transfer the file to the third location (which is probably your desktop), then upload it to the new location.&amp;nbsp; Which is certainly fine for a small file, but when it is many gigabytes (or many hundreds of gigabytes) this may not be feasible, and certainly doubles the transfer time.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;So what can be done?&amp;nbsp; The answer is to use an ssh pipe - transfer the file as a stream from the first server to the desktop, pipe this straight to an ssh connection to its new location.&amp;nbsp; The script below makes this simple (and also assumes that you'd like to gzip and gunzip the file in the stream, reducing the amount of data to be transferred (though increasing processor load).&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#!/bin/ksh&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# sshtransfer expects parameters:&lt;br /&gt;&lt;br /&gt;# sshtransfer user@server1:file user@server2:file&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;usage() {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print "sshtransfer expects user1@server1:file1 user2@server2:file2\n"&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit 1&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;testssh() {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; RESULT=failure&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; RESULT=`ssh -o Batchmode=yes $1 'echo success'`&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if [[ $RESULT == "success" ]];then&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; fi&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Could not connect to $1 - could be connection or ssh key error.\n"&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 1&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;if [[ $# -ne 2 ]];then&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; usage&lt;br /&gt;&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;CONNECT1=`echo $1 | awk -F: '{print $1}'`&lt;br /&gt;&lt;br /&gt;CONNECT2=`echo $2 | awk -F: '{print $1}'`&lt;br /&gt;&lt;br /&gt;FILE1=`echo $1 | awk -F: '{print $2'}`&lt;br /&gt;&lt;br /&gt;FILE2=`echo $2 | awk -F: '{print $2'}`&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;testssh $CONNECT1 &amp;amp;&amp;amp; testssh $CONNECT2 &amp;amp;&amp;amp; eval ssh -o Batchmode=yes $CONNECT1 \'gzip -c ${FILE1}\' 2\&amp;gt;/dev/null \| ssh -o Batchmode=yes $CONNECT2 \'gunzip \&amp;gt; $FILE2 \' 2&amp;gt;/dev/null&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;exit 0&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670611478312494182-370370538701055124?l=grepanswers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grepanswers.blogspot.com/feeds/370370538701055124/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670611478312494182&amp;postID=370370538701055124' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/370370538701055124'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/370370538701055124'/><link rel='alternate' type='text/html' href='http://grepanswers.blogspot.com/2010/09/operating-system-all-unix-variants.html' title='transferring files across firewalls / piping through ssh'/><author><name>Philip</name><uri>http://www.blogger.com/profile/17393962070577694995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670611478312494182.post-8161858039470709731</id><published>2010-07-27T16:50:00.000+01:00</published><updated>2010-07-27T16:50:32.965+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><category scheme='http://www.blogger.com/atom/ns#' term='cgi.pm'/><category scheme='http://www.blogger.com/atom/ns#' term='refresh'/><title type='text'>Using perl (CGI.pm) to generate a meta refresh tag with start_html</title><content type='html'>&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-weight: bold;"&gt;Perl version:&lt;/span&gt; 5.8.4 &lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Operating System:&lt;/span&gt; Solaris 10 (should be irrelevant)&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Problem:&lt;/span&gt; It's irritatingly difficult to get perl to generate a refresh tag...&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;This should have been simple, but wasn't.&amp;nbsp; Sounds like a good topic for a quick blog post.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;How to generate &amp;lt;&lt;span class="start-tag"&gt;meta&lt;/span&gt;&lt;span class="attribute-name"&gt; http-equiv&lt;/span&gt;=&lt;span class="attribute-value"&gt;"refresh" &lt;/span&gt;&lt;span class="attribute-name"&gt;content&lt;/span&gt;=&lt;span class="attribute-value"&gt;"5" &lt;/span&gt;&lt;span class="error"&gt;&lt;span class="attribute-name"&gt;/&lt;/span&gt;&lt;/span&gt;&amp;gt; in your header tag with Perl.pm:&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;print start_html(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -head=&amp;gt;meta({-http_equiv =&amp;gt; 'refresh',&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -content =&amp;gt; '5' }),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;Easy.&amp;nbsp; If you found this with two minutes googling, feel the warm, satisfying glow of knowing that it took me about two hours to figure that one out.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670611478312494182-8161858039470709731?l=grepanswers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grepanswers.blogspot.com/feeds/8161858039470709731/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670611478312494182&amp;postID=8161858039470709731' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/8161858039470709731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/8161858039470709731'/><link rel='alternate' type='text/html' href='http://grepanswers.blogspot.com/2010/07/using-perl-cgipm-to-generate-meta.html' title='Using perl (CGI.pm) to generate a meta refresh tag with start_html'/><author><name>Philip</name><uri>http://www.blogger.com/profile/17393962070577694995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670611478312494182.post-1643527581813165473</id><published>2009-08-05T11:56:00.003+01:00</published><updated>2010-10-27T10:54:30.552+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><title type='text'>Adding password security to a website with Apache (without using .htaccess)</title><content type='html'>&lt;span style="font-family:arial;"&gt;To password protect your site, without using a .htaccess file, follow the following instructions:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;/usr/local/apache/bin/htpasswd -c /usr/local/apache/conf/htpasswd [username]&lt;username&gt;&lt;/username&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;This will prompt for a password to be specified.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;For each new user required, type in:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;/usr/local/apache/bin/htpasswd /usr/local/apache/conf/htpasswd [username]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Edit /usr/local/apache/conf/httpd.conf :&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;vi /usr/local/apache/conf/httpd.conf&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;For the directory that needs to be protected (probably the same as the DocumentRoot directory) - &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    &lt;directory&gt;&lt;/directory&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        AuthUserFile /usr/local/apache/conf/htpasswd&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        AuthGroupFile /dev/null&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        AuthName "Password required"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        AuthType Basic&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        require valid-user&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Save httpd.conf and gracefully restart apache:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;/usr/local/apache/bin/apachectl graceful&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670611478312494182-1643527581813165473?l=grepanswers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grepanswers.blogspot.com/feeds/1643527581813165473/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670611478312494182&amp;postID=1643527581813165473' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/1643527581813165473'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/1643527581813165473'/><link rel='alternate' type='text/html' href='http://grepanswers.blogspot.com/2009/08/adding-password-security-to-website.html' title='Adding password security to a website with Apache (without using .htaccess)'/><author><name>Philip</name><uri>http://www.blogger.com/profile/17393962070577694995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670611478312494182.post-4011278666329733286</id><published>2009-06-23T16:28:00.004+01:00</published><updated>2010-10-27T10:51:39.613+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Redhat'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><title type='text'>File in wrong format error: compiling Apache on Redhat 5</title><content type='html'>&lt;span style="font-family: arial;"&gt;&lt;span style="font-weight: bold;"&gt;Apache version:&lt;/span&gt; 2.0.63&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="font-weight: bold;"&gt;Operating System:&lt;/span&gt; Redhat 5 (2.6.18-53.el5)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial; font-weight: bold;"&gt;Error keywords seen:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;/usr/lib/libexpat.so: could not read symbols: File in wrong format&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;collect2: ld returned 1 exit status&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;(in make step)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;A few people seem to have experienced this problem when compiling Apache on Redhat, so I thought I'd share my fix.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;The problem is that /usr/lib/libexpat.so links to a 32-bit binary library, where a 64-bit library is expected:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;# ls -l /usr/lib/libexpat.so&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;lrwxrwxrwx 1 root root 27 May  8  2008 /usr/lib/libexpat.so -&gt; ../../lib/libexpat.so.0.5.0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;# file /lib/libexpat.so.0.5.0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;/lib/libexpat.so.0.5.0: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), stripped&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;The correct library can be found at /lib64/libexpat.so.0.5.0:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;# file /lib64/libexpat.so.0.5.0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;/lib64/libexpat.so.0.5.0: ELF 64-bit LSB shared object, AMD x86-64, version 1 (SYSV), stripped&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;We can easily see that this /lib64 directory is &lt;span style="font-weight: bold;"&gt;not&lt;/span&gt; referenced during the compile:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;#gcc -print-search-dirs&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;install: /usr/lib/gcc/x86_64-redhat-linux/4.1.2/&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;programs: =/usr/libexec/gcc/x86_64-redhat-linux/4.1.2/:/usr/libexec/gcc/x86_64-redhat-linux/4.1.2/:/usr/libexec/gcc/x86_64-redhat-linux/:/usr/lib/gcc/x86_64-redhat-linux/4.1.2/:/usr/lib/gcc/x86_64-redhat-linux/:/usr/libexec/gcc/x86_64-redhat-linux/4.1.2/:/usr/libexec/gcc/x86_64-redhat-linux/:/usr/lib/gcc/x86_64-redhat-linux/4.1.2/:/usr/lib/gcc/x86_64-redhat-linux/:/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../x86_64-redhat-linux/bin/x86_64-redhat-linux/4.1.2/:/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../x86_64-redhat-linux/bin/&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;libraries: =/usr/lib/gcc/x86_64-redhat-linux/4.1.2/:/usr/lib/gcc/x86_64-redhat-linux/4.1.2/:/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../x86_64-redhat-linux/lib/x86_64-redhat-linux/4.1.2/:/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../x86_64-redhat-linux/lib/:/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../x86_64-redhat-linux/4.1.2/:/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../:/lib/x86_64-redhat-linux/4.1.2/:/lib/:/usr/lib/x86_64-redhat-linux/4.1.2/:/usr/lib/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;The question of course, is how to ensure that the correct library is picked up.  You could recreate the link from /usr/lib to the 64-bit library, but a better way is to set the library in the LIBRARY_PATH variable:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;# export LIBRARY_PATH=/lib64&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Now we can see that the /lib64 directory will be searched:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;# gcc -print-search-dirs&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;install: /usr/lib/gcc/x86_64-redhat-linux/4.1.2/&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;programs: =/usr/libexec/gcc/x86_64-redhat-linux/4.1.2/:/usr/libexec/gcc/x86_64-redhat-linux/4.1.2/:/usr/libexec/gcc/x86_64-redhat-linux/:/usr/lib/gcc/x86_64-redhat-linux/4.1.2/:/usr/lib/gcc/x86_64-redhat-linux/:/usr/libexec/gcc/x86_64-redhat-linux/4.1.2/:/usr/libexec/gcc/x86_64-redhat-linux/:/usr/lib/gcc/x86_64-redhat-linux/4.1.2/:/usr/lib/gcc/x86_64-redhat-linux/:/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../x86_64-redhat-linux/bin/x86_64-redhat-linux/4.1.2/:/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../x86_64-redhat-linux/bin/&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;libraries: =/&lt;span style="font-weight: bold;"&gt;lib64&lt;/span&gt;/x86_64-redhat-linux/4.1.2/:/&lt;span style="font-weight: bold;"&gt;lib64&lt;/span&gt;/:/usr/lib/gcc/x86_64-redhat-linux/4.1.2/:/usr/lib/gcc/x86_64-redhat-linux/4.1.2/:/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../x86_64-redhat-linux/lib/x86_64-redhat-linux/4.1.2/:/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../x86_64-redhat-linux/lib/:/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../x86_64-redhat-linux/4.1.2/:/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../:/lib/x86_64-redhat-linux/4.1.2/:/lib/:/usr/lib/x86_64-redhat-linux/4.1.2/:/usr/lib/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;When we rerun configure and make, the compile now completes as it should.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670611478312494182-4011278666329733286?l=grepanswers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grepanswers.blogspot.com/feeds/4011278666329733286/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670611478312494182&amp;postID=4011278666329733286' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/4011278666329733286'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/4011278666329733286'/><link rel='alternate' type='text/html' href='http://grepanswers.blogspot.com/2009/06/file-in-wrong-format-error-compiling.html' title='File in wrong format error: compiling Apache on Redhat 5'/><author><name>Philip</name><uri>http://www.blogger.com/profile/17393962070577694995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670611478312494182.post-8768759191283783891</id><published>2009-05-18T14:38:00.003+01:00</published><updated>2010-10-27T10:50:57.268+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='scripting'/><title type='text'>Reconstructing user directories from a passwd file</title><content type='html'>&lt;span style="font-family: arial;"&gt;Sometimes I'm asked to set up a box with the same users as another box.  The easiest way for me to do this is to copy the /etc/passwd, /etc/group and /etc/shadow files over, and then run the following shell fragment:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;for LINE in `cat /etc/passwd|sed s/' '/'SPACE'/g`;do&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        DIR=`echo $LINE|awk -F: '{print $6}'|sed s/'SPACE'/' '/g`&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        USER=`echo $LINE|awk -F: '{print $1}'|sed s/'SPACE'/' '/g`&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        GROUP_NUM=`echo $LINE|awk -F: '{print $4}'`&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        GROUP=`grep ":${GROUP_NUM}:" /etc/group|awk -F: '{print $1}'`&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        if [[ ! -d ${DIR} ]];then&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;                echo $DIR doesn\'t exist&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;                echo mkdir ${DIR}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;                mkdir ${DIR}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;                echo cp -r /export/home/appman/* ${DIR}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;                cp -r /export/home/appman/* ${DIR}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;                echo cp -r /export/home/appman/.profile ${DIR}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;                cp -r /export/home/appman/.profile ${DIR}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;                echo chown -R ${USER}:${GROUP} ${DIR}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;                chown -R ${USER}:${GROUP} ${DIR}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        fi&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;done&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670611478312494182-8768759191283783891?l=grepanswers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grepanswers.blogspot.com/feeds/8768759191283783891/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670611478312494182&amp;postID=8768759191283783891' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/8768759191283783891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/8768759191283783891'/><link rel='alternate' type='text/html' href='http://grepanswers.blogspot.com/2009/05/reconstructing-user-directories-from.html' title='Reconstructing user directories from a passwd file'/><author><name>Philip</name><uri>http://www.blogger.com/profile/17393962070577694995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670611478312494182.post-1728422708708043181</id><published>2009-04-02T15:55:00.008+01:00</published><updated>2010-10-27T10:50:46.111+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='solaris 10'/><category scheme='http://www.blogger.com/atom/ns#' term='mod_security'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><category scheme='http://www.blogger.com/atom/ns#' term='solaris'/><title type='text'>Compiling mod_security</title><content type='html'>&lt;span style="font-family:arial;"&gt;&lt;b&gt;Apache version:&lt;/b&gt; 2.0.63  /  2.2.11&lt;br /&gt;&lt;b&gt;mod_security version:&lt;/b&gt; &lt;a href="https://svn.apache.org/repos/asf/httpd/httpd/tags/2.0.63/modules/filters/mod_deflate.c"&gt;&lt;/a&gt;2.5.9&lt;br /&gt;&lt;b&gt;Operating System:&lt;/b&gt; Solaris 10 (Generic_120011-14 on Sun T2000) non-global zone&lt;br /&gt;&lt;b&gt;Error keywords seen:&lt;br /&gt;&lt;/b&gt;configure: *** pcre library not found.;&lt;br /&gt;configure: error: pcre library is required;&lt;br /&gt;configure: *** apr library not found.;&lt;br /&gt;configure: error: apr library is required;&lt;br /&gt;configure: *** apu library not found.;&lt;br /&gt;configure: error: apu library is required;&lt;br /&gt;./configure: line 5518: /app/apache_2.0.63/bin/apr-config/apr-config: Not a directory&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Installing mod_security as a shared object should be a simple, straight-forward task - and indeed, the last time I had to do it, I had no problems.  However, today I had to compile mod_security on a Solaris 10 zone, and I ran into some unusual problems - partly due to an error in the configure script.&lt;br /&gt;&lt;br /&gt;Running through the basic instructions, everything proceeded as expected:&lt;br /&gt;&lt;br /&gt;download &lt;span style="font-family:courier new;"&gt;modsecurity-apache_2.5.9.tar.gz&lt;/span&gt; from http://sourceforge.net/project/showfiles.php?group_id=68846&amp;amp;package_id=67646&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;cp &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-family:courier new;"&gt;download modsecurity-apache_2.5.9.tar.gz /tmp&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;gunzip modsecurity-apache_2.5.9.tar.gz&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;tar -xf modesecurity-apache_2.5.9.tar&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;cd /tmp/modsecurity-apache_2.5.9&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Check that &lt;span style="font-family:courier new;"&gt;mod_unique_id&lt;/span&gt; is installed and that &lt;span style="font-family:courier new;"&gt;/usr/lib/libxml2.so&lt;/span&gt; is present.  Ensure that gcc and ar are present in the PATH.&lt;br /&gt;&lt;br /&gt;Okay - ready to run configure:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# ./configure --with-apxs=/app/apache_2.0.63/bin/apxs&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;checking for g++... g++&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;REDACTED&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;configure: looking for Apache module support via DSO through APXS&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;configure: found apxs at /app/apache_2.0.63/bin/apxs&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;configure: checking httpd version&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;configure: httpd is recent enough&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Use of uninitialized value in concatenation (.) or string at /app/apache_2.0.63/bin/apxs line 237.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;checking for libpcre config script... no&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;configure: *** pcre library not found.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;configure: error: pcre library is required&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So - we pop over to sunfreeware, download &lt;span style="font-family:courier new;"&gt;pcre-7.8-sol10-sparc-local.gz&lt;/span&gt; - transfer this to the global zone, and as root install it:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;pkgadd -d ./pcre-7.8-sol10-sparc-local&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;On with the show:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# ./configure --with-apxs=/app/apache_2.0.63/bin/apxs&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;checking for g++... g++&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;REDACTED&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Use of uninitialized value in concatenation (.) or string at /app/apache_2.0.63/bin/apxs line 237.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;checking for libpcre config script... /usr/local/bin/pcre-config&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;configure: using '-L/usr/local/lib -R/usr/local/lib -lpcre' for pcre Library&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;checking for libapr config script... /app/apache_2.0.63/bin/apxs/apxs&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;./configure: line 5509: /app/apache_2.0.63/bin/apxs/apxs: Not a directory&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;./configure: line 5512: /app/apache_2.0.63/bin/apxs/apxs: Not a directory&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;./configure: line 5515: /app/apache_2.0.63/bin/apxs/apxs: Not a directory&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;./configure: line 5518: /app/apache_2.0.63/bin/apxs/apxs: Not a directory&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;configure: *** apr library not found.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;configure: error: apr library is required&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;What's that?  Whoever said anything about &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-family:courier new;"&gt;/app/apache_2.0.63/bin/apxs/apxs&lt;/span&gt;?  Where did that come from?&lt;br /&gt;&lt;br /&gt;Well, let's address the missing apr library issue first, but adding&lt;span style="font-family:courier new;"&gt; --with-apr=/app/apache_2.0.63/bin/apr-config&lt;/span&gt; to the configure settings:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# ./configure --with-apxs=/app/apache_2.0.63/bin/apxs --with-apr=/app/apache_2.0.63/bin/apr-config&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;checking for g++... g++&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;REDACTED&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;./configure: line 5509: /app/apache_2.0.63/bin/apr-config/apr-config: Not a directory&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;configure: apr CFLAGS:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;./configure: line 5512: /app/apache_2.0.63/bin/apr-config/apr-config: Not a directory&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;configure: apr LDFLAGS:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;./configure: line 5515: /app/apache_2.0.63/bin/apr-config/apr-config: Not a directory&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;configure: apr LIBS:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;./configure: line 5518: /app/apache_2.0.63/bin/apr-config/apr-config: Not a directory&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;configure: apr LINK_LD:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;configure: *** apr library not found.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;configure: error: apr library is required&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And we have it again - we've got a doubled &lt;span style="font-family:courier new;"&gt;apr-config/apr-config&lt;/span&gt; - where did that come from?&lt;br /&gt;&lt;br /&gt;So I had a look at configure, and we can fix the problem by finding the line:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    APR_CONFIG="${with_apr}/${APR_CONFIG}"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;and replace with,&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    APR_CONFIG="${with_apr}"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;while we're at it, we note the the same is true of apu-config, so:&lt;br /&gt;&lt;br /&gt;find the line:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    APU_CONFIG="${with_apu}/${APU_CONFIG}"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;and replace with:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    APU_CONFIG="${with_apu}"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The bug for this is actually earlier in the code, where the &lt;span style="font-family:courier new;"&gt;${withval}&lt;/span&gt; parameter isn't stripped down right, but this fix will work well enough for our requirements.&lt;br /&gt;&lt;br /&gt;Now we run configure as:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;./configure --with-apxs=/app/apache_2.0.63/bin/apxs --with-apr=/app/apache_2.0.63/bin/apr-config --with-apu=/app/apache_2.0.63/bin/apu-config&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;and it works.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;make &amp;amp;&amp;amp; make install&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;- will now finish the installation&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;------&lt;br /&gt;&lt;br /&gt;I've reported this bug to the mod_security project, (https://www.modsecurity.org/tracker/browse/MODSEC-51) - and the bug is known and will be fixed in the 2.5.10 release.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670611478312494182-1728422708708043181?l=grepanswers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grepanswers.blogspot.com/feeds/1728422708708043181/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670611478312494182&amp;postID=1728422708708043181' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/1728422708708043181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/1728422708708043181'/><link rel='alternate' type='text/html' href='http://grepanswers.blogspot.com/2009/04/compiling-modsecurity.html' title='Compiling mod_security'/><author><name>Philip</name><uri>http://www.blogger.com/profile/17393962070577694995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670611478312494182.post-4795210870253500853</id><published>2009-03-06T16:51:00.003Z</published><updated>2009-03-18T13:32:05.854Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='sendmail'/><category scheme='http://www.blogger.com/atom/ns#' term='sendmail.cf'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><category scheme='http://www.blogger.com/atom/ns#' term='sendmail.mc'/><title type='text'>Compiling a new sendmail.cf</title><content type='html'>&lt;span style="font-family:arial;"&gt;Have you spent hours of your life, trying to compile a new sendmail.cf file from a sendmail.mc?&lt;br /&gt;&lt;br /&gt;All the instructions tell you to use m4 to compile it, but without explanation.  All you get is a short file that really doesn't look anything like a sendmail.cf ...&lt;br /&gt;&lt;br /&gt;So try this:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;/usr/ccs/bin/m4 /etc/mail/cf/m4/cf.m4 mysendmail.mc &gt; mysendmail.cf&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670611478312494182-4795210870253500853?l=grepanswers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grepanswers.blogspot.com/feeds/4795210870253500853/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670611478312494182&amp;postID=4795210870253500853' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/4795210870253500853'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/4795210870253500853'/><link rel='alternate' type='text/html' href='http://grepanswers.blogspot.com/2009/03/compiling-new-sendmailcf.html' title='Compiling a new sendmail.cf'/><author><name>Philip</name><uri>http://www.blogger.com/profile/17393962070577694995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670611478312494182.post-1337381793417429625</id><published>2009-02-04T13:32:00.004Z</published><updated>2009-02-04T13:40:08.144Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='RHEL4'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Redhat'/><title type='text'>dup2: Bad file descriptor</title><content type='html'>&lt;span style="font-family:arial;"&gt;&lt;span style="font-weight: bold;"&gt;Operating System:&lt;/span&gt; Redhat Enterprise Linux 4&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-weight: bold;"&gt;Linux Kernel:&lt;/span&gt; 2.4.21-37.ELsmp&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;Error keywords seen:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;dup2: Bad file descriptor&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;/dev/null: Read-only filesystem&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;This is one of the scariest errors I've ever seen. Mainly because it appeared on boot-up after reracking one of our more important Oracle database servers. One of those 'blood runs cold' moments when you realise that the simple, 'turn off, move, turn on' plan has gone wrong, and you're looking at a halted system with an error message you've never seen before.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Left with a prompt inviting me to log in as root, and fix the problem, t&lt;/span&gt;&lt;span style="font-family:arial;"&gt;he first, obvious, thing to do is fsck the drive.  &lt;span style="font-family:courier new;"&gt;fsck (-f)&lt;/span&gt; uncovered and repaired a handful of unreferenced inodes and a few missing blocks. But this didn't work - the same error message appeared after a reboot.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Google's great though, and thanks to &lt;a href="http://www.tek-tips.com/viewthread.cfm?qid=1137579&amp;amp;page=1"&gt;this&lt;/a&gt; page I was able to fix the error quite quickly.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;I'm not convinced the error is caused by device inode permission problems, but certainly some form of corruption was affecting &lt;span style="font-family:courier new;"&gt;/dev/null&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;The root filesystem had been mounted as read-only, so the first task is to remount this with a write option:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;mount -n -o remount,rw /&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Next we remove the offending &lt;span style="font-family:courier new;"&gt;/dev/null&lt;/span&gt; entry:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;rm -f /dev/null&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Now we create a new &lt;span style="font-family:courier new;"&gt;/dev/null&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;mknod -m 666 /dev/null c 1 3&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Happily, the system now rebooted without a problem.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670611478312494182-1337381793417429625?l=grepanswers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grepanswers.blogspot.com/feeds/1337381793417429625/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670611478312494182&amp;postID=1337381793417429625' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/1337381793417429625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/1337381793417429625'/><link rel='alternate' type='text/html' href='http://grepanswers.blogspot.com/2009/02/dup2-bad-file-descriptor.html' title='dup2: Bad file descriptor'/><author><name>Philip</name><uri>http://www.blogger.com/profile/17393962070577694995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670611478312494182.post-809088250336333184</id><published>2009-01-27T14:08:00.002Z</published><updated>2009-01-27T14:19:00.581Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='64-bit'/><category scheme='http://www.blogger.com/atom/ns#' term='solaris'/><title type='text'>How to discover whether Solaris is running in 32- or 64-bit mode</title><content type='html'>&lt;span style="font-family: arial;"&gt;The command is:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;isainfo -v&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;If the following line is present, then Solaris is running in 64-bit mode:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;64-bit sparcv9 applications&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;If only the following line is present, Solaris is running in 32-bit mode:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;32-bit sparc applications&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670611478312494182-809088250336333184?l=grepanswers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grepanswers.blogspot.com/feeds/809088250336333184/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670611478312494182&amp;postID=809088250336333184' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/809088250336333184'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/809088250336333184'/><link rel='alternate' type='text/html' href='http://grepanswers.blogspot.com/2009/01/how-to-discover-whether-solaris-is.html' title='How to discover whether Solaris is running in 32- or 64-bit mode'/><author><name>Philip</name><uri>http://www.blogger.com/profile/17393962070577694995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670611478312494182.post-1327966778933053778</id><published>2009-01-23T18:28:00.002Z</published><updated>2009-01-23T19:00:00.782Z</updated><title type='text'>Delegating root privileges with RBAC</title><content type='html'>&lt;b style="font-family: arial;"&gt;Operating System:&lt;/b&gt;&lt;span style="font-family: arial;"&gt; Solaris 8/9/10&lt;/span&gt;&lt;br /&gt;&lt;b style="font-family: arial;"&gt;Related software:&lt;/b&gt;&lt;span style="font-family: arial;"&gt; Websphere, IBM IHS, Apache, EdgeSuite Testing Server, etc.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;The default HTTP port is always 80, which causes a problem on Unix servers.  All ports less than 1024 are privileged, and only root can bind processes to them.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Since webservers therefore frequently have to be run as root, this can lead to a conflict between development teams (for example), who might want to start and stop Apache with impunity, and Systems Administrators, who might object to giving out the root password, or being bombarded with requests to stop and start the webserver.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;There are a number of ways to devolve root authority to individual users, not least sudo, but on Solaris the preferred method (mine, at least) is RBAC.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;RBAC (Role-Based Access Control) is a long and complicated topic - so let's just focus on what you need to do to safely devolve the root authority.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;First we create an authority for the delegation of control, called org.apache.httpd.control by editing the /etc/security/auth_attr file to contain the following line:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;org.apache.httpd.control:::Control Apache webserver::help=RtApache.html&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;The RtApache.html part refers to a helpfile held in the directory /usr/lib/help/profiles/locale/C - you can choose to create this file or not, as you choose.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Second we create a profile for this delegation of control, ApacheCTL, by editing the /etc/security/prof_attr file to contain the following line:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;ApacheCTL:::Permit stop and start of Apache webserver:help=RtApache.html;auths=org.apache.httpd.control&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Third we must create two entries in /etc/security/exec_attr, corresponding to the commands that we wish to run as root:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;ApacheCTL:suser:cmd:::/usr/local/apache/bin/httpd:euid=0;egid=0;uid=0;gid=0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;ApacheCTL:suser:cmd:::/usr/local/apache/bin/apachectl:euid=0;egid=0;uid=0;gid=0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Next, assuming that we have a user ppetrelli, we must edit the /etc/user_attr file to include a line for ppetrelli as follows (or to edit the ppetrelli line to reflect the following):&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;ppetrelli::::type=user;profiles=ApacheCTL;auths=org.apache.httpd.control&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Finally, we must change the default login shell for ppetrelli so that it uses one of the profile checking shells pfksh, pfcsh or pfsh.  These are identical to ksh, csh or sh, with the additional feature that they check the RBAC profiles and can devolve root authority as described.  This should be done by editing the /etc/passwd file.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;It may also be necessary to change the first line of /usr/local/apache/bin/apachectl to also use this new shell - so change #!/bin/sh to #!/bin/pfsh - but often this is not required.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;This will now allow ppetrelli to stop and start apache using his own user account.  Only the two commands apachectl and httpd are run as root.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670611478312494182-1327966778933053778?l=grepanswers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grepanswers.blogspot.com/feeds/1327966778933053778/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670611478312494182&amp;postID=1327966778933053778' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/1327966778933053778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/1327966778933053778'/><link rel='alternate' type='text/html' href='http://grepanswers.blogspot.com/2009/01/delegating-root-privileges-with-rbac.html' title='Delegating root privileges with RBAC'/><author><name>Philip</name><uri>http://www.blogger.com/profile/17393962070577694995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670611478312494182.post-8797541540730181028</id><published>2009-01-22T10:30:00.004Z</published><updated>2009-01-22T11:04:14.602Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='KVM'/><category scheme='http://www.blogger.com/atom/ns#' term='AF601A'/><category scheme='http://www.blogger.com/atom/ns#' term='HP'/><category scheme='http://www.blogger.com/atom/ns#' term='Console switch'/><category scheme='http://www.blogger.com/atom/ns#' term='cascade'/><title type='text'>Cascading HP IP Console (KVM) Switches (AF601A)</title><content type='html'>&lt;span style="font-family: arial;"&gt;&lt;span style="font-weight: bold;"&gt;Hardware&lt;/span&gt;:  HP IP Console Switch AF601A&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Error&lt;/span&gt;:  Unable to create cascade configuration&lt;br /&gt;&lt;br /&gt;I've had a rubbish couple of days trying to configure a number of HP Console switches.   Despite them all working o&lt;span style="font-family: arial;"&gt;n their own, I couldn't get one of them - a new HP IP Console switch (model AF601A) to work as part of the cascade.   &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: arial;"&gt;None of the suggested diagnostic steps helped (including updating all the firmware versions!)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="font-family: arial;"&gt;I checked the documentation, and the HP websites - all of which confirmed that these switches should work in a cascade configuration, allowing management of up to 4096 servers  (e.g. see &lt;/span&gt;&lt;/span&gt;&lt;a style="font-family: arial;" href="http://h10010.www1.hp.com/wwpc/uk/en/sm/WF06b/3447589-3447589-3446284-3446304-3446304-1846547-1846549.html"&gt;here&lt;/a&gt;&lt;span style="font-family: arial;"&gt;).  &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="font-family: arial;"&gt;But don't believe it.  After two days work, I un&lt;/span&gt;covered one line, on one webpage (&lt;/span&gt;&lt;a style="font-family: arial;" href="http://h18004.www1.hp.com/products/quickspecs/12464_div/12464_div.html"&gt;this one&lt;/a&gt;&lt;span style="font-family: arial;"&gt;) saying:&lt;/span&gt;&lt;br /&gt;&lt;ul style="font-family: arial;"&gt;&lt;li&gt;HP IP Console Switches are only supported at the top tier of a cascaded            configuration.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family: arial;"&gt;And that's the answer.  You &lt;/span&gt;&lt;span style="font-weight: bold; font-family: arial;"&gt;cannot&lt;/span&gt;&lt;span style="font-family: arial;"&gt; use these switches to create a cascade configuration, unless you're using them as the controller.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Happily I was able to juggle the switches with others in our server room, and now have a working configuration - but be warned!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670611478312494182-8797541540730181028?l=grepanswers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grepanswers.blogspot.com/feeds/8797541540730181028/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670611478312494182&amp;postID=8797541540730181028' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/8797541540730181028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/8797541540730181028'/><link rel='alternate' type='text/html' href='http://grepanswers.blogspot.com/2009/01/cascading-hp-ip-console-kvm-switches.html' title='Cascading HP IP Console (KVM) Switches (AF601A)'/><author><name>Philip</name><uri>http://www.blogger.com/profile/17393962070577694995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670611478312494182.post-2759398425116746771</id><published>2009-01-08T14:34:00.002Z</published><updated>2009-01-08T14:37:15.746Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='self-signed certificate'/><category scheme='http://www.blogger.com/atom/ns#' term='ssl'/><category scheme='http://www.blogger.com/atom/ns#' term='openssl'/><category scheme='http://www.blogger.com/atom/ns#' term='imapd'/><category scheme='http://www.blogger.com/atom/ns#' term='certificate'/><title type='text'>Creating a new imapd.pem self-signed certificate (with openssl)</title><content type='html'>&lt;span style="font-family:arial;"&gt;&lt;span style="font-family:courier new;"&gt;openssl req -x509 -newkey rsa:1024 -keyout /usr/local/ssl_0.9.7g/certs/imapd.pem -out imapd.pem -days 3650&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;for unencrypted private key:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;openssl req -x509 -newkey rsa:1024 -keyout /usr/local/ssl_0.9.7g/certs/imapd.pem -out imapd.pem -days 3650 -nodes&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;That's it.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670611478312494182-2759398425116746771?l=grepanswers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grepanswers.blogspot.com/feeds/2759398425116746771/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670611478312494182&amp;postID=2759398425116746771' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/2759398425116746771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/2759398425116746771'/><link rel='alternate' type='text/html' href='http://grepanswers.blogspot.com/2009/01/creating-new-imapdpem-self-signed.html' title='Creating a new imapd.pem self-signed certificate (with openssl)'/><author><name>Philip</name><uri>http://www.blogger.com/profile/17393962070577694995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670611478312494182.post-5538919478268012528</id><published>2009-01-08T11:17:00.005Z</published><updated>2009-01-08T11:57:06.669Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='nfs'/><category scheme='http://www.blogger.com/atom/ns#' term='solaris'/><title type='text'>NFS mount a remote directory with solaris</title><content type='html'>&lt;span style="font-family:arial;"&gt;Let's say we have a directory /hiro on server nakamura, which we need to mount as directory /claire on server bennet.  We're going to assume that both servers are aware of the other by name (either as an entry in the /etc/hosts file, or dns, etc.) - but if not, you can replace the server names by ip addresses.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;If this is a one-off requirement, then on nakamura, we issue the command:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;share -F nfs -o rw,public,anon=root /hiro&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;This will make the directory /hiro available for nfs-mounting.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;On bennet, we issue the command:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;mount -F nfs nakamura:/hiro /claire&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;This will make the /hiro directory from nakamura available as the /claire directory on bennet.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;However, all of this is transient, and will be lost on a reboot.  To make this permanent, edit /etc/nfs/dfstab on nakamura, and add the line:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;share -F nfs -o rw,public,anon=root /hiro&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;You can now share the directory as before, or by the command shareall&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;On bennet, edit /etc/vfstab and add in the line:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;nakamura:/hiro    -    /claire    nfs    -    yes    rw,hard,bg&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;You can now mount the directory as before, or by the command mount -a, or mount /claire&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670611478312494182-5538919478268012528?l=grepanswers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grepanswers.blogspot.com/feeds/5538919478268012528/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670611478312494182&amp;postID=5538919478268012528' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/5538919478268012528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/5538919478268012528'/><link rel='alternate' type='text/html' href='http://grepanswers.blogspot.com/2009/01/nfs-mount-remote-directory-with-solaris.html' title='NFS mount a remote directory with solaris'/><author><name>Philip</name><uri>http://www.blogger.com/profile/17393962070577694995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670611478312494182.post-4495890313548249937</id><published>2009-01-06T11:47:00.003Z</published><updated>2009-01-06T11:56:37.747Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='zones'/><category scheme='http://www.blogger.com/atom/ns#' term='solaris'/><title type='text'>How to rename a zone</title><content type='html'>&lt;span style="font-family:arial;"&gt;&lt;b&gt;Operating System:&lt;/b&gt; Solaris 10 (Generic_125100-10 on Sun T2000) global zone&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# zoneadm -z oldname halt&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# zonecfg -z oldname&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;zonecfg:oldname&gt; set zonename=newname&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;zonecfg:oldname&gt; commit&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;zonecfg:oldname&gt; exit&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# zoneadm -z newname boot&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To a great extent, that's it - you're done.  But it is a good idea also to edit the /etc/hosts and the /etc/inet/ipnodes files, and update them with the new name also.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670611478312494182-4495890313548249937?l=grepanswers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grepanswers.blogspot.com/feeds/4495890313548249937/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670611478312494182&amp;postID=4495890313548249937' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/4495890313548249937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/4495890313548249937'/><link rel='alternate' type='text/html' href='http://grepanswers.blogspot.com/2009/01/how-to-rename-zone.html' title='How to rename a zone'/><author><name>Philip</name><uri>http://www.blogger.com/profile/17393962070577694995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670611478312494182.post-2328798140081917149</id><published>2008-12-30T17:11:00.004Z</published><updated>2009-01-06T11:57:28.939Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='recovery'/><title type='text'>Recovering a box without the root password or a user account</title><content type='html'>&lt;span style="font-family:arial;"&gt;&lt;b&gt;How to rescue a Linux box where you've lost the root password, and you don't have an account.&lt;/b&gt;  (This is equivalent to saying, how to take control of a Unix system)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;We'll do this in 4 stages:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;1) prepare a temporary account to use to log into the system&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;2) boot the target system using an alternative boot media&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;3) remove the root password, and set up the temporary account&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;4) boot the system normally, and log in via the temporary account, then switch to the root user, and assume control of the system&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;1) prepare a temporary account to use to log into the account&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;On a separate Unix system, add a temporary user via your preferred method, and give it a password.  Now extract the hashed password from /etc/shadow on that system.  Assuming that you have called the account 'temp', this command will extract it in one line:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;grep ^temp: /etc/shadow|awk -F: '{print $2}'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;It'll look something horribly unfriendly like $1$ndbiqpq5$4DVeD3KsBmlHZv8jre3S31 - make a careful note of it.  There's no escaping this bit.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;2) Set up your boot media - be it a CD, a DVD, a PXE kernel, a bootable data stick - whatever you want to use, insert it as appropriate in the machine and turn it on.  So long as you can get a terminal session, it'll do.  The Redhat install CDs even mount the system for you to /mnt/sysimage - but otherwise do this manually.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;3) On the target system, find and edit the /etc/passwd file, you're looking for the root entry, which should be right at the top.  It'll look something like this:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;root:x:0:0:root:/root:/bin/ksh&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Delete out the 'x' in the second column, so it now reads:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;root::0:0:root:/root:/bin/ksh&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;You'll also need to add in a line for a temporary user:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;temp:x:9999:10:Temporary - remove after use!:/home/temp:/bin/ksh&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Now find and edit the /etc/shadow file.  Again, you'll need to edit the root entry, which will look something like:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;root:$1$ndbiqpq5$4DVeD3KsBmlHZv8jre3S31:13244:0:99999:7:::&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Replace this completely with the line:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;root::::&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Also add a line for the temporary user such as:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;temp:$1$ndbiqpq5$4DVeD3KsBmlHZv8jre3S31:14243:0:99999:7:::&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Be sure to replace the second column with the password hash that you know, rather than the example one I use here.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;4) Boot the system normally.  Log in using the temporary account and password, and acquire a terminal session.  Switch to the root user (su -) - you should not be prompted for a password and should simply become the root user.  With this power, you should now edit the /etc/passwd file once more, and add back the x you removed earlier, so that:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;root::0:0:root:/root:/bin/ksh&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;becomes:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;root:x:0:0:root:/root:/bin/ksh&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Now set a new root password - 'passwd' or 'passwd root', and remove the temporary account 'userdel temp'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;You now have root access to the system, and can add new accounts as required.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670611478312494182-2328798140081917149?l=grepanswers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grepanswers.blogspot.com/feeds/2328798140081917149/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670611478312494182&amp;postID=2328798140081917149' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/2328798140081917149'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/2328798140081917149'/><link rel='alternate' type='text/html' href='http://grepanswers.blogspot.com/2008/12/recovering-box-without-root-password-or.html' title='Recovering a box without the root password or a user account'/><author><name>Philip</name><uri>http://www.blogger.com/profile/17393962070577694995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670611478312494182.post-5170473358932117427</id><published>2008-11-23T17:32:00.004Z</published><updated>2009-01-06T11:57:42.130Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='belkin'/><category scheme='http://www.blogger.com/atom/ns#' term='router'/><title type='text'>How to stop a Belkin Router blocking webpages</title><content type='html'>&lt;span style="font-family:arial;"&gt;Sometimes Belkin routers can wrongly blacklist webpages.  If you can't get through to a webpage, but suspect the router is blocking it, log into the router using your browser of choice, and check the Security Log.  If you see something like...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Nov.23.2008 17:34:43      security:752802.541 Blocked Prot=6, 65.54.153.254:80 &gt; 36.168.14.24:3694, AS Seq=442762075, Ack=474151315 -Black List Defense&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Then the chances are your router is blocking the page.  Run an nslookup on the website that's being blocked - if the same IP address shows up in the security log, that's what's happening.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Fix:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;telnet to the router (here it's 192.168.0.1, but more usually it'll be 192.168.2.1)&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="font-family:courier new;"&gt;$ telnet 192.168.0.1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Trying 192.168.0.1...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Connected to 192.168.0.1.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Escape character is '^]'.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                ,vvvdP9P???^   ,,,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;              vvd###P^`^         vvvvv v&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;         vv#####?^                  ????####vv,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      vv####??     ,vvvdP???^  ,,,        ??##^&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     v#####?    ,vvd##P?^        #?#v#vvv&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   v#####?    v###P^    ,vvv,        '?#?,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  ######?   ####?^ ,vd#P?^     `???##&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  #####?   v####  ,d##P^           ''&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; ######   v####  ]###L                   _   _          _                  ___&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; #####?   v####  ]##L                   /   / \  |\ |  |_  \/   /\   |\ |   |&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; ######    ####  ]###L                  \_  \_/  | \|  |_  /\  /--\  | \|   |&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; ?#####v   ####v  ]##h,            ,,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  ?#####    ?###h,  `9#hv,     ,vv###&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    ######    #####L    ]###L        ,v#v'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    ?#####vv    ?9##hv,        ,,vvvv###'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       ?#####vv     `??9P\vv,   ^         vv##,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;          ######                       #######L&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            ??###hvv,          ,vvv#?##?????&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                `????9hdhvv,&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Login: admin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Password: ****************&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Login successful&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;--&gt; firewall set IDS blacklist disable   &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;--&gt; &lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;And that's that.  Unfortunately, if you reset the router (and with a Belkin router?  You're going to reset it a lot) - then you'll need to do this again.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670611478312494182-5170473358932117427?l=grepanswers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grepanswers.blogspot.com/feeds/5170473358932117427/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670611478312494182&amp;postID=5170473358932117427' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/5170473358932117427'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/5170473358932117427'/><link rel='alternate' type='text/html' href='http://grepanswers.blogspot.com/2008/11/how-to-stop-belkin-router-blocking.html' title='How to stop a Belkin Router blocking webpages'/><author><name>Philip</name><uri>http://www.blogger.com/profile/17393962070577694995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670611478312494182.post-8815396152349353350</id><published>2008-11-21T16:26:00.003Z</published><updated>2009-01-06T11:58:19.469Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='solaris'/><category scheme='http://www.blogger.com/atom/ns#' term='scripting'/><title type='text'>How to change the name of a Solaris server</title><content type='html'>&lt;span style="font-family:arial;"&gt;This script was written for Solaris 10, but it checks for the presence of all the files it wants to change and allows you to quit or continue if it doesn't find all of them.  It was also written for a T2000, hence the interface name being e1000g0, but you can change that easily.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#Change oldname -&gt; newname in the following files:&lt;br /&gt;#&lt;br /&gt;#/etc/hosts&lt;br /&gt;#/etc/hostname.e1000g0 (or bge0)&lt;br /&gt;#/etc/nodename&lt;br /&gt;#/etc/dumpadm.conf&lt;br /&gt;#/etc/inet/ipnodes&lt;br /&gt;#/etc/inet/hosts&lt;br /&gt;#/etc/mnttab&lt;br /&gt;#/etc/sysidcfg&lt;br /&gt;&lt;br /&gt;#Accomplish this with...&lt;br /&gt;&lt;br /&gt;OLDNAME=old_name_of_server&lt;br /&gt;NEWNAME=new_name_of_server&lt;br /&gt;INTERFACE=e1000g0 (or bge0 and so on)&lt;br /&gt;&lt;br /&gt;for FILE in /etc/hosts /etc/hostname.$INTERFACE /etc/nodename /etc/dumpadm.conf /etc/inet/ipnodes /etc/inet/hosts /etc/mnttab /etc/sysidcfg; do&lt;br /&gt;&lt;br /&gt;count=0&lt;br /&gt;if [[ ! -f $FILE ]]; then&lt;br /&gt;echo $FILE not found&lt;br /&gt;$count=$(( $count + 1 ))&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;if [[ $count -gt 0 ]];then&lt;br /&gt;GO="false"&lt;br /&gt;while [[ $GO == "false" ]];do&lt;br /&gt; print -n 'Continue anyway? y/n'&lt;br /&gt; read ANSWER&lt;br /&gt; if [[ "$ANSWER" == "y" ]] || [[ "$ANSWER" == "Y" ]]; then&lt;br /&gt;  echo "Okay."&lt;br /&gt;  GO="true"&lt;br /&gt; elsif [[ "$ANSWER" == "n" ]] || [[ "$ANSWER" == "Y" ]]; then&lt;br /&gt;  echo "Quitting."&lt;br /&gt;  exit 0&lt;br /&gt; else&lt;br /&gt;  echo "Sorry?"&lt;br /&gt; fi&lt;br /&gt;done&lt;br /&gt;fi &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;sed s/$OLDNAME/$NEWNAME/g /etc/hosts &gt; /etc/hosts_new&lt;br /&gt;sed s/$OLDNAME/$NEWNAME/g /etc/hostname.$INTERFACE &gt; /etc/hostname.$INTERFACE_new&lt;br /&gt;sed s/$OLDNAME/$NEWNAME/g /etc/nodename &gt; /etc/nodename_new&lt;br /&gt;sed s/$OLDNAME/$NEWNAME/g /etc/dumpadm.conf &gt; /etc/dumpadm.conf_new&lt;br /&gt;sed s/$OLDNAME/$NEWNAME/g /etc/inet/ipnodes &gt; /etc/inet/ipnodes_new&lt;br /&gt;sed s/$OLDNAME/$NEWNAME/g /etc/inet/hosts &gt; /etc/inet/hosts_new&lt;br /&gt;sed s/$OLDNAME/$NEWNAME/g /etc/mnttab &gt; /etc/mnttab_new&lt;br /&gt;sed s/$OLDNAME/$NEWNAME/g /etc/sysidcfg &gt; /etc/sysidcfg_new&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#Make sure you back up the current settings...&lt;br /&gt;&lt;br /&gt;cp hosts hosts_orig&lt;br /&gt;cp hostname.$INTERFACE hostname.$INTERFACE_orig&lt;br /&gt;cp nodename nodename_orig&lt;br /&gt;cp dumpadm.conf dumpadm.conf_orig&lt;br /&gt;cp inet/ipnodes inet/ipnodes_orig&lt;br /&gt;cp inet/hosts inet/hosts_orig&lt;br /&gt;cp mnttab mnttab_orig&lt;br /&gt;cp sysidcfg sysidcfg_orig&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#Feeling brave?&lt;br /&gt;&lt;br /&gt;mv hosts_new hosts&lt;br /&gt;mv hostname.$INTERFACE_new hostname.$INTERFACE&lt;br /&gt;mv nodename_new nodename&lt;br /&gt;mv dumpadm.conf_new dumpadm.conf&lt;br /&gt;mv inet/ipnodes_new /inet/ipnodes&lt;br /&gt;mv inet/hosts_new inet/hosts&lt;br /&gt;mv mnttab_new mnttab&lt;br /&gt;mv sysidcfg_new sysidcfg&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#Now set the new name:&lt;br /&gt;&lt;br /&gt;uname -S $NEWNAME&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#Finally, restart:&lt;br /&gt;&lt;br /&gt;shutdown -i 6 -g 0 -y &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670611478312494182-8815396152349353350?l=grepanswers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grepanswers.blogspot.com/feeds/8815396152349353350/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670611478312494182&amp;postID=8815396152349353350' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/8815396152349353350'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/8815396152349353350'/><link rel='alternate' type='text/html' href='http://grepanswers.blogspot.com/2008/11/how-to-change-name-of-solaris-server.html' title='How to change the name of a Solaris server'/><author><name>Philip</name><uri>http://www.blogger.com/profile/17393962070577694995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670611478312494182.post-3503464161010073551</id><published>2008-11-21T14:14:00.001Z</published><updated>2009-01-06T11:58:29.539Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><category scheme='http://www.blogger.com/atom/ns#' term='crontab'/><title type='text'>crontab</title><content type='html'>&lt;span style="font-family:courier new;"&gt;&lt;span style="font-family:arial;"&gt;Never worry about how crontab works again, just put this at the bottom of every crontab:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;br /&gt;#* * * * * command +options&lt;br /&gt;#| | | | |&lt;br /&gt;#| | | | .----- day of week (Sun=0-6)&lt;br /&gt;#| | | .------- month (1-12)&lt;br /&gt;#| | .--------- day of month (1-31)&lt;br /&gt;#| .----------- hour (0-23)&lt;br /&gt;#.------------- min (0-59)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;It works for me, anyway.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670611478312494182-3503464161010073551?l=grepanswers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grepanswers.blogspot.com/feeds/3503464161010073551/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670611478312494182&amp;postID=3503464161010073551' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/3503464161010073551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/3503464161010073551'/><link rel='alternate' type='text/html' href='http://grepanswers.blogspot.com/2008/11/crontab.html' title='crontab'/><author><name>Philip</name><uri>http://www.blogger.com/profile/17393962070577694995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670611478312494182.post-3045044130620908136</id><published>2008-11-21T12:16:00.001Z</published><updated>2009-01-06T11:58:41.709Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='keygen'/><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><category scheme='http://www.blogger.com/atom/ns#' term='scripting'/><title type='text'>add ssh key pair for ssh logins without password authentication</title><content type='html'>&lt;span style="font-family:arial;"&gt;This isn't really recommended unless you require it for scripting purposes.  However, if you &lt;i&gt;are&lt;/i&gt; trying to write a script that needs to log in to a number of remote servers, and are trying to avoid typing in passwords (or hard-coding passwords in an expect script, or similar) - this could be a lifesaver.&lt;br /&gt;&lt;br /&gt;Create a key:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier;"&gt;$ ssh-keygen -t dsa -f ~/.ssh/id_dsa -C "you@example.com"&lt;br /&gt;     Generating DSA keys:  Key generation complete.&lt;br /&gt;     Enter passphrase (empty for no passphrase): USE-A-PASSPHRASE&lt;br /&gt;     Enter same passphrase again: USE-A-PASSPHRASE&lt;br /&gt;     Your identification has been saved in ~/.ssh/id_dsa&lt;br /&gt;     Your public key is:&lt;br /&gt;     1024 35 [really long string] you@example.com&lt;br /&gt;     Your public key has been saved in ~/.ssh/id_dsa.pub&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;For some servers, it's ssh-keygen -d&lt;br /&gt;&lt;br /&gt;Create a list of servers (serverlist) you want to be able to log into freely.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier;"&gt;for server in `cat serverlist`;do&lt;br /&gt;       if [[ "`echo $server|cut -c 1`" == "#" ]]; then&lt;br /&gt;               continue&lt;br /&gt;       fi&lt;br /&gt;if [[ "`echo $server|cut -c 1`" == "&amp;amp;" ]]; then&lt;br /&gt;               break&lt;br /&gt;       fi&lt;br /&gt;       echo $server&lt;br /&gt;       cat ~/.ssh/id_dsa.pub | ssh pharries@$server 'cat - &gt;&gt; ~/.ssh/authorized_keys'&lt;br /&gt;done &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Now you should be able to ssh to the box without being prompted for a password.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670611478312494182-3045044130620908136?l=grepanswers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grepanswers.blogspot.com/feeds/3045044130620908136/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670611478312494182&amp;postID=3045044130620908136' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/3045044130620908136'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/3045044130620908136'/><link rel='alternate' type='text/html' href='http://grepanswers.blogspot.com/2008/11/add-ssh-key-pair-for-ssh-logins-without.html' title='add ssh key pair for ssh logins without password authentication'/><author><name>Philip</name><uri>http://www.blogger.com/profile/17393962070577694995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670611478312494182.post-1488085323321165130</id><published>2008-11-20T13:39:00.000Z</published><updated>2008-11-20T14:53:36.883Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='apache_modules'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><title type='text'>How to add mod_deflate to apache without recompiling</title><content type='html'>&lt;span style="font-family:arial;"&gt;&lt;b&gt;Apache version:&lt;/b&gt; 2.0.63&lt;br /&gt;&lt;b&gt;mod_deflate version:&lt;/b&gt; from &lt;a href="https://svn.apache.org/repos/asf/httpd/httpd/tags/2.0.63/modules/filters/mod_deflate.c"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;b&gt;Operating System:&lt;/b&gt; Solaris 10 (Generic_125100-10 on Sun T2000) non-global zone&lt;br /&gt;&lt;b&gt;Error keywords seen:&lt;/b&gt;&lt;br /&gt;Cannot load mod_deflate.so into server: ld.so.1: httpd: fatal: relocation error: file mod_deflate.so: symbol deflate: referenced symbol not found&lt;br /&gt;gcc: command not found&lt;br /&gt;&lt;br /&gt;A requirement came up today to add the mod_deflate module to Apache. (From apache.org: The mod_deflate module provides the DEFLATE output filter that allows output from your server to be compressed before being sent to the client over the network.)&lt;br /&gt;&lt;br /&gt;This shouldn't be tricky, and as I generally compile apache with mod_so enabled, it shouldn't be a problem to add it in as a Dynamic Shared Object (DSO), following the process described &lt;a href="http://httpd.apache.org/docs/2.0/dso.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;So let's have a go and see what happens:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;# cp mod_deflate.c /tmp&lt;br /&gt;# cd /app/apache/bin&lt;br /&gt;# ./apxs -c /tmp/mod_deflate.c&lt;/b&gt;&lt;br /&gt;/app/apache_2.0.63/build/libtool --silent --mode=compile gcc -prefer-pic -DAP_HAVE_DESIGNATED_INITIALIZER -DSOLARIS2=10 -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT -g -O2 -I/app/apache_2.0.63/include -I/app/apache_2.0.63/include -I/app/apache_2.0.63/include -I/usr/local/include -c -o /tmp/mod_deflate.lo /tmp/mod_deflate.c &amp;amp;&amp;amp; touch /tmp/mod_deflate.slo&lt;br /&gt;/app/apache_2.0.63/build/libtool: line 1279: gcc: command not found&lt;br /&gt;apxs:Error: Command failed with rc=65536&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;----------------------------------------------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;Okay - this is my fault, I'm an idiot, and I always do this. I've forgotten that the root PATH doesn't include /usr/sfw/bin by default. Again.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;# which gcc&lt;/b&gt;&lt;br /&gt;no gcc in /usr/sbin /usr/bin&lt;br /&gt;&lt;b&gt;# PATH=$PATH:/usr/sfw/bin&lt;br /&gt;&lt;br /&gt;# ./apxs -c /tmp/mod_deflate.c&lt;/b&gt;&lt;br /&gt;/app/apache_2.0.63/build/libtool --silent --mode=compile gcc -prefer-pic -DAP_HAVE_DESIGNATED_INITIALIZER -DSOLARIS2=10 -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT -g -O2 -I/app/apache_2.0.63/include -I/app/apache_2.0.63/include -I/app/apache_2.0.63/include -I/usr/local/include -c -o /tmp/mod_deflate.lo /tmp/mod_deflate.c &amp;amp;&amp;amp; touch /tmp/mod_deflate.slo&lt;br /&gt;/app/apache_2.0.63/build/libtool --silent --mode=link gcc -o /tmp/mod_deflate.la -rpath /app/apache_2.0.63/modules -module -avoid-version /tmp/mod_deflate.lo&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;----------------------------------------------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;That's more like it.&lt;br /&gt;&lt;br /&gt;APXS is the Apache Extension Tool. Sorry, I mean the APache eXtenSion tool, and here it has compiled mod_deflate.c into a libtool control file, mod_deflate.la, which we'll now turn into an Apache shared object. (If you're not following this, don't worry, neither am I.)&lt;br /&gt;&lt;br /&gt;So we follow the process:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;# ./apxs -i -a -n deflate /tmp/mod_deflate.la&lt;/b&gt;&lt;br /&gt;/app/apache_2.0.63/build/instdso.sh SH_LIBTOOL='/app/apache_2.0.63/build/libtool' /tmp/mod_deflate.la /app/apache_2.0.63/modules&lt;br /&gt;/app/apache_2.0.63/build/libtool --mode=install cp /tmp/mod_deflate.la /app/apache_2.0.63/modules/&lt;br /&gt;cp /tmp/.libs/mod_deflate.so /app/apache_2.0.63/modules/mod_deflate.so&lt;br /&gt;chmod +x /app/apache_2.0.63/modules/mod_deflate.so&lt;br /&gt;cp /tmp/.libs/mod_deflate.lai /app/apache_2.0.63/modules/mod_deflate.la&lt;br /&gt;cp /tmp/.libs/mod_deflate.a /app/apache_2.0.63/modules/mod_deflate.a&lt;br /&gt;chmod 644 /app/apache_2.0.63/modules/mod_deflate.a&lt;br /&gt;ranlib /app/apache_2.0.63/modules/mod_deflate.a&lt;br /&gt;----------------------------------------------------------------------&lt;br /&gt;Libraries have been installed in:&lt;br /&gt;/app/apache_2.0.63/modules&lt;br /&gt;&lt;br /&gt;If you ever happen to want to link against installed libraries&lt;br /&gt;in a given directory, LIBDIR, you must either use libtool, and&lt;br /&gt;specify the full pathname of the library, or use the `-LLIBDIR'&lt;br /&gt;flag during linking and do at least one of the following:&lt;br /&gt;- add LIBDIR to the `LD_LIBRARY_PATH' environment variable&lt;br /&gt;during execution&lt;br /&gt;- use the `-RLIBDIR' linker flag&lt;br /&gt;&lt;br /&gt;See any operating system documentation about shared libraries for&lt;br /&gt;more information, such as the ld(1) and ld.so(8) manual pages.&lt;br /&gt;----------------------------------------------------------------------&lt;br /&gt;chmod 755 /app/apache_2.0.63/modules/mod_deflate.so&lt;br /&gt;[activating module `deflate' in /app/apache_2.0.63/conf/httpd.conf]&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;----------------------------------------------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;And yep, here we can see the module has been created and added to the modules subdirectory, and the appropriate LoadModule line is present in httpd.conf:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;# cd ../modules&lt;br /&gt;# ls&lt;/b&gt;&lt;br /&gt;httpd.exp mod_deflate.so mod_jk.so&lt;br /&gt;&lt;br /&gt;&lt;b&gt;# cd ../conf&lt;br /&gt;# cat httpd.conf&lt;/b&gt;&lt;br /&gt;…&lt;br /&gt;LoadModule deflate_module modules/mod_deflate.so&lt;/i&gt;&lt;br /&gt;…&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;----------------------------------------------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;Restart apache, and we’re in business, right? Wrong.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;# ../bin/apachectl restart&lt;/b&gt;&lt;br /&gt;Syntax error on line 1056 of /app/apache_2.0.63/conf/httpd.conf:&lt;br /&gt;Cannot load /app/apache_2.0.63/modules/mod_deflate.so into server: ld.so.1: httpd: fatal: relocation error: file /app/apache_2.0.63/modules/mod_deflate.so: symbol deflate: referenced symbol not found&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;----------------------------------------------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;Oh dear. What does that mean? Well, with a bit of googling – and most credit goes to &lt;a href=http://prefetch.net/blog&gt;Matty at prefetch.net&lt;/a&gt; – it becomes clear that mod_deflate is missing the library with the zip compression tools, libz.so, which is present on the system.&lt;br /&gt;&lt;br /&gt;We can easily confirm that mod_deflate.so is not being linked to this library with ldd:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;# ldd /app/apache/modules/mod_deflate.so&lt;/b&gt;&lt;br /&gt;libc.so.1 =&gt; /lib/libc.so.1&lt;br /&gt;libgcc_s.so.1 =&gt; /usr/sfw/lib/libgcc_s.so.1&lt;br /&gt;libm.so.2 =&gt; /lib/libm.so.2&lt;br /&gt;/platform/SUNW,Sun-Fire-T200/lib/libc_psr.so.1&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;----------------------------------------------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;According to gnu.org (&lt;a href="http://www.gnu.org/software/libtool/manual/libtool.html"&gt;here&lt;/a&gt;), we need to call gcc with -lz (just as to link to libxml2.so we would need to call gcc with -lxml2, and so on) – and we can do this with the variable LDFLAGS (“flags to be used by libtool when it links a program”). Armed with this information, let’s see what happens:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;# export LDFLAGS="-lz";./apr-config –ldflags&lt;br /&gt;&lt;br /&gt;#&lt;br /&gt;#&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;----------------------------------------------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;We get nothing. Apache ignores the LDFLAGS parameter. Diving into the apr-config file, we can se that this is because the following line wipes anything we pass to it:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;LDFLAGS=""&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Well, it’s a small deal to change this to,&lt;br /&gt;&lt;br /&gt;&lt;i&gt;LDFLAGS="-lz"&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;And now we get the expected response:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;# ./apr-config –ldflags&lt;/b&gt;&lt;br /&gt;-lz&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;----------------------------------------------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;So we go through the procedure again:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;# ./apxs –c /tmp/mod_deflate.c&lt;/b&gt;&lt;br /&gt;…&lt;br /&gt;&lt;b&gt;# ./apxs -i -a -n deflate /tmp/mod_deflate.la&lt;/b&gt;&lt;br /&gt;…&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;----------------------------------------------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;Let’s check to see that this has now linked to the desired libz.so:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;# ldd /app/apache_2.0.63/modules/mod_deflate.so&lt;/b&gt;&lt;br /&gt;libz.so.1 =&gt; /usr/lib/libz.so.1&lt;br /&gt;libc.so.1 =&gt; /lib/libc.so.1&lt;br /&gt;libgcc_s.so.1 =&gt; /usr/sfw/lib/libgcc_s.so.1&lt;br /&gt;libm.so.2 =&gt; /lib/libm.so.2&lt;br /&gt;/platform/SUNW,Sun-Fire-T200/lib/libc_psr.so.1&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;----------------------------------------------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;It has, and happily we now see no errors:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;# ./apachectl restart&lt;br /&gt;#&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670611478312494182-1488085323321165130?l=grepanswers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grepanswers.blogspot.com/feeds/1488085323321165130/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670611478312494182&amp;postID=1488085323321165130' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/1488085323321165130'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/1488085323321165130'/><link rel='alternate' type='text/html' href='http://grepanswers.blogspot.com/2008/11/how-to-add-moddeflate-to-apache-without.html' title='How to add mod_deflate to apache without recompiling'/><author><name>Philip</name><uri>http://www.blogger.com/profile/17393962070577694995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670611478312494182.post-4588928506979576516</id><published>2008-11-20T12:09:00.002Z</published><updated>2009-01-08T14:21:40.279Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='misc'/><category scheme='http://www.blogger.com/atom/ns#' term='general'/><category scheme='http://www.blogger.com/atom/ns#' term='welcome'/><title type='text'>What this is, and what this isn't</title><content type='html'>&lt;u style="font-family: arial;"&gt;What this is&lt;/u&gt;&lt;br /&gt;&lt;p style="font-family: arial;" face="arial"&gt;The output of my professional life, in no particular order.  I have a terrible memory, and this is to remind me how I fixed things in the past.  If it helps anyone else out in the process, that's serendipitous.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;u style="font-family: arial;"&gt;What this isn't&lt;/u&gt;&lt;br /&gt;&lt;p style="font-family: arial;"&gt;Any attempt to set myself up as an authority on anything whatsoever, or a guaranteed set of support instructions for anything, ever, in any way shape or form.  At all.&lt;/p&gt;&lt;p style="font-family: arial;"&gt;&lt;span style=";font-size:85%;" &gt;(A vague disclaimer is nobody's friend. Have fun!) &lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670611478312494182-4588928506979576516?l=grepanswers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grepanswers.blogspot.com/feeds/4588928506979576516/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670611478312494182&amp;postID=4588928506979576516' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/4588928506979576516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670611478312494182/posts/default/4588928506979576516'/><link rel='alternate' type='text/html' href='http://grepanswers.blogspot.com/2008/11/what-this-is-and-what-this-isnt.html' title='What this is, and what this isn&apos;t'/><author><name>Philip</name><uri>http://www.blogger.com/profile/17393962070577694995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
