天天看点

利用Shell开发跳板机功能脚本案例

转载地址:http://oldboy.blog.51cto.com/2561410/1915017

1)首先做好SSH密钥验证(跳板机地址192.168.33.128)

<code>[root@oldboy~]</code><code># useradd jump  #&lt;==要在所有机器上操作。</code>

<code>[root@oldboy~]</code><code># echo 123456|passwd --stdin jump #&lt;==要在所有机器上操作。</code>

<code>Changingpassword </code><code>for</code> <code>user jump.</code>

<code>passwd</code><code>:all authentication tokens updated successfully.</code>

以下操作命令仅在跳板机上操作:

<code>[root@oldboy~]</code><code># su - jump</code>

<code>[jump@oldboy~]$ </code><code>ssh</code><code>-keygen -t dsa -P </code><code>''</code> <code>-f ~/.</code><code>ssh</code><code>/id_dsa</code> <code>&gt;</code><code>/dev/null</code> <code>2&gt;&amp;1  </code><code>#&lt;==生成密钥对。</code>

<code>[jump@oldboy~]$ </code><code>ssh</code><code>-copy-</code><code>id</code> <code>-i ~/.</code><code>ssh</code><code>/id_dsa</code><code>.pub 192.168.33.130   </code><code>#&lt;==将公钥分发到其他服务器。</code>

<code>Theauthenticity of host </code><code>'192.168.33.130 (192.168.33.130)'</code> <code>can't be established.</code>

<code>RSA keyfingerprint is fd:2c:0b:81:b0:95:c3:33:c1:45:6a:1c:16:2f:b3:9a.</code>

<code>Are yousure you want to </code><code>continue</code> <code>connecting (</code><code>yes</code><code>/no</code><code>)? </code><code>yes</code>

<code>Warning:Permanently added </code><code>'192.168.33.130'</code> <code>(RSA) to the list of known hosts.</code>

<code>[email protected]'spassword:</code>

<code>Now trylogging into the machine, with </code><code>"ssh '192.168.33.130'"</code><code>, and check </code><code>in</code><code>:</code>

<code>  </code> 

<code>  </code><code>.</code><code>ssh</code><code>/authorized_keys</code>

<code>to makesure we haven</code><code>'t added extra keys that you weren'</code><code>t expecting.</code>

<code>[jump@oldboy~]$ </code><code>ssh</code><code>-copy-</code><code>id</code> <code>-i ~/.</code><code>ssh</code><code>/id_dsa</code><code>.pub 192.168.33.129  </code><code>#&lt;==将公钥分发到其他服务器。</code>

<code>Theauthenticity of host </code><code>'192.168.33.129 (192.168.33.129)'</code> <code>can't be established.</code>

<code>Warning:Permanently added </code><code>'192.168.33.129'</code> <code>(RSA) to the list of known hosts.</code>

<code>[email protected]'spassword:</code>

<code>Now trylogging into the machine, with </code><code>"ssh '192.168.33.129'"</code><code>, and check </code><code>in</code><code>:</code>

2)实现传统的远程连接菜单选择脚本。

菜单脚本如下:

<code>cat</code> <code>&lt;&lt;menu</code>

<code>                  </code><code>1)oldboy-192.168.33.129</code>

<code>                  </code><code>2)oldgirl-192.168.33.130</code>

<code>                  </code><code>3)</code><code>exit</code>

<code>menu</code>

3)利用linux信号防止用户中断信号在跳板机上操作。

<code>functiontrapper () {</code>

<code>        </code><code>trap</code> <code>':'</code> <code>INT  EXIT TSTP TERM HUP  </code><code>#&lt;==屏蔽这些信号。</code>

<code>}</code>

4)用户登录跳板机后即调用脚本(不能命令行管理跳板机),并只能按管理员的要求选单。

以下为实战内容。

脚本放在跳板机上:

<code>[root@oldboy~]</code><code># echo '[ $UID -ne 0 ] &amp;&amp; . /server/scripts/jump.sh'&gt;/etc/profile.d/jump.sh  </code>

<code>[root@oldboy~]</code><code># cat /etc/profile.d/jump.sh</code>

<code>[ $UID-</code><code>ne</code> <code>0 ] &amp;&amp; . </code><code>/server/scripts/jump</code><code>.sh</code>

<code>[root@oldboyscripts]</code><code># cat /server/scripts/jump.sh</code>

<code>#!/bin/sh</code>

<code>#oldboy training</code>

<code>trapper(){</code>

<code>    </code><code>trap</code> <code>':'</code> <code>INT EXIT TSTP TERM HUP  </code><code>#&lt;==定义需要屏蔽的信号,冒号表示啥都不做。</code>

<code>main(){</code>

<code>while</code> <code>:</code>

<code>do</code>

<code>      </code><code>trapper</code>

<code>      </code><code>clear</code>

<code>      </code><code>cat</code><code>&lt;&lt;menu</code>

<code>       </code><code>1)Web01-192.168.33.129</code>

<code>       </code><code>2)Web02-192.168.33.130</code>

<code>read</code> <code>-p</code><code>"Pls input a num.:"</code> <code>num</code>

<code>case</code><code>"$num"</code> <code>in</code>

<code>    </code><code>1)</code>

<code>        </code><code>echo</code> <code>'login in 192.168.33.129.'</code>

<code>        </code><code>ssh</code> <code>192.168.33.129</code>

<code>        </code><code>;;</code>

<code>    </code><code>2)</code>

<code>        </code><code>echo</code> <code>'login in 192.168.33.130.'</code>

<code>        </code><code>ssh</code> <code>192.168.33.130</code>

<code>    </code><code>110)</code>

<code>        </code><code>read</code> <code>-p </code><code>"your birthday:"</code> <code>char</code>

<code>        </code><code>if</code> <code>[ </code><code>"$char"</code> <code>= </code><code>"0926"</code><code>];</code><code>then</code>

<code>          </code><code>exit</code>

<code>          </code><code>sleep</code> <code>3</code>

<code>        </code><code>fi</code>

<code>    </code><code>*)</code>

<code>        </code><code>echo</code> <code>"select error."</code>

<code>        </code><code>esac</code>

<code>done</code>

<code>main</code>

执行效果如下:

<code>[root@oldboy~]</code><code># su - jump  #&lt;==切到普通用户即弹出菜单,工作中直接用jump登录,即弹出菜单。</code>

<code>     </code><code>1)Web01-192.168.33.129</code>

<code>     </code><code>2)Web02-192.168.33.130</code>

<code>Pls inputa num.:</code>

<code>Pls inputa num.:1  </code><code>#&lt;==选1进入Web01服务器。</code>

<code>login in192.168.33.129.</code>

<code>Lastlogin: Tue Oct 11 17:23:52 2016 from 192.168.33.128</code>

<code>[jump@littleboy~]$  </code><code>#&lt;==按ctrl+d退出到跳板机服务器再次弹出菜单。</code>

<code>Pls inputa num.:2     </code><code>#&lt;==选2进入Web02服务器。</code>

<code>login in192.168.33.130.</code>

<code>Lastlogin: Wed Oct 12 23:30:14 2016 from 192.168.33.128</code>

<code>[jump@oldgirl~]$   </code><code>#&lt;==按ctrl+d退出到跳板机服务器再次弹出菜单。</code>

<code>    </code><code>2)Web02-192.168.33.130</code>

<code>Pls inputa num.:110    </code><code>#&lt;==选110进入跳板机命令提示符。</code>

<code>yourbirthday:0926      </code><code>#&lt;==需要输入特别码才能进入的,这里管理员通道,密码要保密呦。</code>

<code>[root@oldboyscripts]</code><code>#  #&lt;==跳板机管理命令行。</code>

      本文转自027ryan  51CTO博客,原文链接:http://blog.51cto.com/ucode/1951485,如需转载请自行联系原作者