天天看點

利用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,如需轉載請自行聯系原作者