本文展示如何創(chuàng)建一個(gè)簡(jiǎn)單的腳本剥扣,用于修改所有用戶在ldap中的簽名屬性
這里會(huì)用兩個(gè)腳本來完成這個(gè)工作氢拥,在此過程中會(huì)解釋為什么不使用一個(gè)腳本來完成:
腳本1:
#!/bin/bash
path="/opt/zimbra/bin"
for i in `/opt/zimbra/bin/zmprov -l gaa`
do
echo -ne "Checking account: $i \t"
$path/zmprov ma $i zimbraPrefMailSignatureEnabled TRUE
signature=`$path/zmprov ga $i | egrep "(^cn|^ou|^company|^street|^telephoneNumber|^mobile|^title)" | cut -d : -f 2 | sed 's/^\ //g'`
$path/zmprov ma $i zimbraPrefMailSignature "$signature"
echo "done!"
done
-
這個(gè)腳本如下功能:
設(shè)置zmprov的默認(rèn)路徑
設(shè)置zimbraPrefMailSignatureEnabled的屬性值為TRUE
定義變量 signature
給變量設(shè)置 ldap中用戶不同的屬性值吕晌,在此例子中:(^cn|^ou|^company|^street|^telephoneNumber|^mobile|^title)
悦即,屬性根據(jù)管理員需要進(jìn)行改變
最后修改用戶為ldap中的用戶屬性
腳本2:
#!/bin/bash
path="/opt/zimbra/bin"
for i in `/opt/zimbra/bin/zmprov -l gaa`
do
echo -ne "Adding SignatureID to account: $i \t"
signatureid=`$path/zmprov ga $i zimbraSignatureId | sed -n '2p' | cut -d : -f 2 | sed 's/^\ //g'`
$path/zmprov ma $i zimbraPrefDefaultSignatureId "$signatureid"
$path/zmprov ma $i zimbraPrefForwardReplySignatureId "$signatureid"
echo "done!"
done
- 腳本2:
獲取zimbraSignatureId的屬性值
將獲取zimbraSignatureId 的值設(shè)置給 zimbraPrefDefaultSignatureId
將獲取zimbraSignatureId 的值設(shè)置給 zimbraPrefForwardReplySignatureId
向下滾動(dòng)查看瓢捉,為何要使用兩個(gè)腳本笨忌,并找到如何運(yùn)行腳本
這些值在 Admin的web頁(yè)在這些地方可看到:
下圖我們可以看到綠色和紅色的框蓝仲,第一個(gè)腳本就是設(shè)置綠色框的屬性值,第二個(gè)腳本就是設(shè)置紅色框的屬性值
有很重要的一點(diǎn)我們需要知道官疲,在我們?cè)O(shè)置紅色框的屬性值之前袱结,就算運(yùn)行了第一個(gè)腳本設(shè)置了簽名值,它也不是生效的途凫。在web頁(yè)面這些設(shè)置很直觀垢夹,但是在運(yùn)行腳本的時(shí)候,常常會(huì)被忽視
為何要使用兩個(gè)腳本:
使用兩個(gè)腳本是因?yàn)槿绻褍蓚€(gè)腳本的內(nèi)容寫在一個(gè)腳本中维费,第二個(gè)腳本的命令將不會(huì)被執(zhí)行果元。第二個(gè)腳本的作用是找出 zimbraPrefDefaultSignatureId 的屬性值促王,并分配給另外兩個(gè)屬性。然而而晒,即使改變簽名蝇狼,屬性值也不會(huì)分配給 signatureid。得到這個(gè)值的唯一方法就是用戶登錄他自己的賬戶欣硼。然后,我們可以把這個(gè)屬性的值,并將其分配給另外兩個(gè)屬性题翰。
如下顯示信息:
Checking account: 9@azmo.com ++ /opt/zimbra/bin/zmprov ga 9@azmo.com
++ sed 's/^\ //g'
++ cut -d : -f 2
++ egrep '(^cn|^ou|^company|^street|^telephoneNumber|^mobile|^title)'
+ signature='9
dsvsdv
dvdssd
dfvsdvs
svadsv'
+ /opt/zimbra/bin/zmprov ma 9@azmo.com zimbraPrefMailSignatureEnabled TRUE zimbraPrefMailSignature '9
dsvsdv
dvdssd
dfvsdvs
svadsv'
++ /opt/zimbra/bin/zmprov ga 9@azmo.com zimbraSignatureId
++ sed 's/^\ //g'
++ cut -d : -f 2
++ sed -n 2p
+ signatureid=5fd31077-c448-4a97-8d7e-b1a8aa8c6930
+ /opt/zimbra/bin/zmprov ma 9@azmo.com zimbraPrefDefaultSignatureId 5fd31077-c448-4a97-8d7e-b1a8aa8c6930
+ /opt/zimbra/bin/zmprov ma 9@azmo.com zimbraPrefForwardReplySignatureId 5fd31077-c448-4a97-8d7e-b1a8aa8c6930
+ echo 'done!'
done!
+ for i in '`/opt/zimbra/bin/zmprov -l gaa`'
+ echo -ne 'Checking account: 49@azmo.com \t'
Checking account: 49@azmo.com ++ /opt/zimbra/bin/zmprov ga 49@azmo.com
++ sed 's/^\ //g'
++ egrep '(^cn|^ou|^company|^street|^telephoneNumber|^mobile|^title)'
++ cut -d : -f 2
+ signature='49
sefefe
efefes
efefef
fef'
+ /opt/zimbra/bin/zmprov ma 49@azmo.com zimbraPrefMailSignatureEnabled TRUE zimbraPrefMailSignature '49
sefefe
efefes
efefef
fef'
++ /opt/zimbra/bin/zmprov ga 49@azmo.com zimbraSignatureId
++ sed 's/^\ //g'
++ cut -d : -f 2
++ sed -n 2p
+ signatureid=
+ /opt/zimbra/bin/zmprov ma 49@azmo.com zimbraPrefDefaultSignatureId ''
+ /opt/zimbra/bin/zmprov ma 49@azmo.com zimbraPrefForwardReplySignatureId ''
+ echo 'done!'
done!
運(yùn)行第一個(gè)腳本后,+ signatureid= 的輸出只能顯示第一個(gè)用戶诈胜,因?yàn)橛脩?9@azmo.com 已經(jīng)登錄豹障。對(duì)于第二個(gè)用戶,signatureid 值沒有被設(shè)置焦匈,所以接下來兩個(gè)屬性都設(shè)置為了空血公,因此兩個(gè)腳本放在一個(gè)腳本中,會(huì)有命令未正常執(zhí)行
我們應(yīng)該怎么做缓熟?
運(yùn)行了第一個(gè)腳本后累魔,發(fā)一封全局郵件通知用戶重載或者重新登錄。然后運(yùn)行第二個(gè)腳本或者讓他們自己設(shè)置自己郵箱的紅色框框的屬性值