Shell 開發跳板機功能指令碼

2021-09-28 15:12:55 字數 2175 閱讀 1969

開發企業級shell跳板機案例。要求使用者登入到跳板機僅能執行管理員給定的選項動作,不允許以任何形式中斷指令碼到跳板機伺服器上執行任何系統命令。

下面的命令在所有的機器上操作:

[root@jump ~]# useradd zhouhao

[root@jump ~]# echo 123456 | passwd --stdin zhouhao

[root@test ~]# useradd zhouhao

[root@test ~]# echo 123456 | passwd --stdin zhouhao

以下操作命令僅在跳板機上操作:

[root@jump ~]# su - zhouhao

[root@jump ~]# ssh-keygen -t dsa -p '' -f ~/.ssh/id_dsa >/dev/null 2>&1 #<==生成金鑰對

[root@jump ~]# ssh-copy-id -i ~/.ssh/id_dsa.pub#<==將公鑰分發到其他伺服器。

#如果ssh埠 不是22 ,可以使用 -p引數 如下:

[root@jump ~]# ssh-copy-id -i ~/.ssh/id_dsa.pub "-p 5180 伺服器ip"

2) 實現傳統的遠端;連線選單選擇指令碼。

選單指令碼如下:

cat <3) 利用 linux 訊號防止使用者中斷訊號在跳板機上操作.

trap ':' int exit tstp term hup #<==遮蔽這些訊號。< code="">}

4) 使用者登入跳板機後即呼叫指令碼(不能命令列管理跳板機),並只能按照管理員的要求選單。

以下為實戰內容:

指令碼放在跳板機上:

4.1 將pofifle.d目錄下建立,登入使用者就自動執行的jump.sh 指令碼

[root@jump ~]# echo '[ $uid -ne 0 ] && . /server/scripts/jump.sh'>/etc/profile.d/jump.sh

[root@jump ~]# cat /etc/profile.d/jump.sh

#!/bin/sh

[ $uid -ne 0 ] && . /server/scripts/jump.sh

#判斷如果不是root使用者,就執行jump.sh,然後呼叫/server/scripts/jump.sh指令碼

[root@jump ~]# mkdir -p /server/scripts/

[root@jump ~]# cd /server/scripts/

4.2 編寫跳板機主指令碼

[root@jump scripts]# cat jump.sh 

#!/bin/bash

trap ':' int exit tstp term hup #定義需要遮蔽的訊號,冒號表示啥也不做

}main(){

while :

do clear

cat<執行效果如下:

[root@jump ~]# su - zhouhao

1)lb01-192.168.1.3

pls input a num.:1 #<==選1進入lb01 伺服器。

login in lb01.

last login: mon oct 14 14:02:25 2019 from 192.168.1.5

[zhouhao@h1 ~]$ #<==按ctrl+d退出到跳板機伺服器再次彈出選單。

1)lb01-192.168.1.3

pls input a num.:110 #<==選110進入跳板機命令提示符。

your birthday:0306 #<==需要輸入特別碼才能進入的,這裡管理員通道,密碼要保密呦。

[root@jump ~]# #<==跳板機管理命令列。

shell 跳板機便捷增加使用者及設定密碼

我的需求 因網路限制,某些客戶機ssh到伺服器都得使用跳板機進行轉一下,每次幫開帳戶,不麻煩不難,但總覺得還可以再優。不多說,直接放shell。很簡單 bin bash test add user and set passwd username 1 adduser log data1 useradd...

shell 跳板機便捷增加使用者及設定密碼

我的需求 因網路限制,某些客戶機ssh到伺服器都得使用跳板機進行轉一下,每次幫開帳戶,不麻煩不難,但總覺得還可以再優。不多說,直接放shell。很簡單 bin bash test add user and set passwd username 1 adduser log data1 useradd...

自動化指令碼登入跳板機和伺服器

通過跳板機,兩步驗證登入伺服器,示例 如下 usr bin expect set timeout 5 set jump server 127.0.0.1 set port 8080 set username test set userpasswd test set verifycode lindex...