實用!!shell 一鍵部署samba

2021-10-23 21:34:48 字數 2231 閱讀 3293

要求:寫乙個shell指令碼,能夠事項一鍵安裝並配置samba服務,執行該指令碼時需要歹意個路徑(格式$0 $1) /opt/samba.sh /opt/samba 目錄若存在,則自動建立。(任何人都可以訪問,並且不需要密碼,並且是唯讀的)

【shell分析】

1.需要判斷的使用者給出的目錄是不是絕對路徑,即是否以『/』開頭

2.指令碼需要判斷samba 服務是否已經安裝,若已經安裝了就不需要執行yum -y install samba 了

3.配置檔案可以使用sed -i 也可以使用cat >> $dirconf << eof

4.samba配置可以參考http://www/apelearn.com/study_v2/chapter24.html#id1其中在centos7上的新samba配置稍微有點差異,本題要求的任何人都可以訪問,不需要修改security這一專案,保持預設即可。

vi samba.sh ###進入vi編輯器編輯samba.sh指令碼 *

#!/bin/bash

#一鍵安裝配置samba服務

if [ 「$#」 -ne 1 ]

then

echo 「執行指令碼的格式為:$0 /dir/」

exit 1

else

if ! echo $1 | grep -q 『^/.*』

then

echo 「請提供乙個絕對路徑」

exit 1

fifi

if ! rpm -q samba > /dev/null

then

echo 「將要安裝samba」

sleep 1

yum install -y samba

if [ $? -ne 0 ]

then

echo 「samba安裝失敗」

exit 1

fifi

dirconf="/etc/samba/smb.conf"

cat >> $dirconf << eof

[share]

comment = share all

path = $1

browseable = yes

public = yes

writable = no

eofif [ ! -d $1 ]

then

mkdir -p $1

fichmod 777 $1

echo 「test」 > $1/test.txt

systemctl start smb

if [ $? -ne 0 ]

then

echo 「samba服務啟動失敗,請檢查配置檔案是否正確」

else

echo 「samba配置完畢,請驗證」

fi新增執行許可權:

#chmod +x samba.sh

#./samba.sh

執行指令碼的格式為:./samba.sh /dir/

#./samba.sh /dir/

將要安裝samba

【shell解析】

1.if [ $ # -ne 1 ];then

這段命令是用於判斷引數的個數是否為1,不是則進行then的邏輯處理,其中$#表示引數個數,-ne是 不等於判斷引數個數。

if [ $# -ne 1 ];then

echo 「引數個數不為1」

exit

else

echo 「引數個數為1」

fi./samba.sh /opt ###表示1個引數

./samba.sh ####表示沒引數

./samba.sh /opt /mnt ###表示多個引數

2.判斷使用者輸入的引數是不是以『/』開頭,因為絕對路徑是以『/』開頭,如果不是絕對路徑,後面針對該路徑不好操作。

3.判斷是否安裝過samba包,rpm -q samba ,命令執行後,如果是沒安裝,則會提示未安裝,返回值為非0值,用這個作為判斷條件就可以了。

4,如果沒安裝,則用yum安裝samba,判斷返回值是否為0,如果不能正常安裝samba包應該退出指令碼。

5.用cat >> $dirconf << eof 將配置追加到配置檔案裡面。

6.在centos 7上啟動服務命令為systemctl start smb ,在centos 6 上啟動是/etc/init,d/smb start

shell指令碼一鍵部署LNMP

author create date 2020 07 15 01 52 version mail description bin bash mysql的原始碼安裝 read p 即將進行mysql原始碼安裝,請問是否進行 y n speed case speed in y mysqld yes my...

一鍵部署Shell指令碼解析

1 定位指令碼所在的絕對路徑 bin bash shell dir cd dirname 0 pwd 其中,dirname 0,獲取當前指令碼所在絕對目錄cd dirname 0 進入這個目錄 切換當前工作目錄 pwd,顯示切換後指令碼所在的工作目錄2 讀取引數檔案並執行命令 source是bash...

shell指令碼一鍵部署LAMP架構

一 部署lamp基本架構 1.l linux a apache m mysql p php 2.穩定版本 mysql5.1,php5.3,apache2.2 3.安裝順序,apache mysql php 4.將所需的壓縮包 放指定目錄 本人的壓縮包放在虛擬機器 mnt目錄中 1 編譯原理 主要為了...