在网上找了好多批量导入账号的教程,发现只能进行简单的批量导入,只能导入账号和密码而已,并不能进行其他用户信息的导入,当添加的用户很多时,那就是一个很麻烦的事情了,在zimbra的一些中文论坛也没有找到合适的资料,我估计一些比我们更了解更厉害的大师们不愿意把自己更好的资源分享出来,所以我就自己动手动脑的整出来了,下面直接分享shell脚本。
由于本人能力有限,脚本绝对不是编的最好的,所以希望更厉害的人能把脚本优化下。
创建一个sh文件,脚本名称可以随意命名为***.sh,代码如下:
第一种(最优选择)
或者
这三种方式都可以,需要说明下,给那些不太明白的人,
第一种中,name1.txt中的值为一行多列值,实例中我给出的是“账号,显示名,姓”三个参数,那么while read为
第二种和第三种方法中:
由于本人能力有限,脚本绝对不是编的最好的,所以希望更厉害的人能把脚本优化下。
创建一个sh文件,脚本名称可以随意命名为***.sh,代码如下:
第一种(最优选择)
#!/bin/bash
DOMAIN=DOMIAN.com
PASSWD=123456.
ZMPROV=/opt/zimbra/bin/zmprov
while read user dis xing
do
$ZMPROV ca $user@$DOMAIN $PASSWD displayName $dis sn $xing
done < name1.txt
或者
<span style="font-size:14px;"><span style="font-size:14px;">#!/bin/bash
cat name1.txt | awk '{print $1"@DOMAIN.com","123456","displayName",$2}' >>/opt/test.txt
ZMPROV=/opt/zimbra/bin/zmprov
while read line
do
$ZMPROV ca $line
done < test.txt</span></span>
或者
<span style="font-size:14px;"><span style="font-size:14px;">#!/bin/bash
ZMPROV=/opt/zimbra/bin/zmprov
cat name1.txt | awk '{print $1"@juumoo.com","uni123456.","displayName",$2}' | while read line
do
$ZMPROV ca $line
done</span></span>
这三种方式都可以,需要说明下,给那些不太明白的人,
第一种中,name1.txt中的值为一行多列值,实例中我给出的是“账号,显示名,姓”三个参数,那么while read为
user dis xing
三个值;
第二种和第三种方法中:
<span style="font-size:14px;"><span style="font-size:14px;">cat name1.txt | awk '{print $1"@juumoo.com","uni123456.","displayName",$2}'</span></span>
上面这段代码其实就是对你给出来的带有相关用户信息的txt文件进行重新编辑,加入域名,密码,displayname等相关参数,这个熟练的人也可以自己重新把编辑好的txt文件直接替换掉“
最后说明下,txt中的参数,需要第一行和最后一行留空,测试了很多遍,因为第一行跟最后一行的值写不进去,提示错误,也不知道为什么。
<span style="font-size:14px;"><span style="font-size:14px;">name1.txt | awk '{print $1"@juumoo.com","uni123456.","displayName",$2}'</span></span>
”这段代码,替换后的代码格式可以参考下面的说明。
最后说明下,txt中的参数,需要第一行和最后一行留空,测试了很多遍,因为第一行跟最后一行的值写不进去,提示错误,也不知道为什么。
shell:读取文件的每一行内容并输出
写法一:
----------------------------------------------------------------------------
#!/bin/bash
while read line
do
echo $line
done < file(待读取的文件)
----------------------------------------------------------------------------
写法二:
----------------------------------------------------------------------------
#!/bin/bash
cat file(待读取的文件) | while read line
do
echo $line
done
----------------------------------------------------------------------------
写法三:
----------------------------------------------------------------------------
for line in `cat file(待读取的文件)`
do
echo $line
done
----------------------------------------------------------------------------
说明:
for逐行读和while逐行读是有区别的,如:
$ cat file
aaaa
bbbb
cccc dddd
$ cat file | while read line; do echo $line; done
aaaa
bbbb
cccc dddd
$ for line in $(<file); do echo $line; done
aaaa
bbbb
cccc
dddd
----------------------------------------------------------------------------
#!/bin/bash
while read line
do
echo $line
done < file(待读取的文件)
----------------------------------------------------------------------------
写法二:
----------------------------------------------------------------------------
#!/bin/bash
cat file(待读取的文件) | while read line
do
echo $line
done
----------------------------------------------------------------------------
写法三:
----------------------------------------------------------------------------
for line in `cat file(待读取的文件)`
do
echo $line
done
----------------------------------------------------------------------------
说明:
for逐行读和while逐行读是有区别的,如:
$ cat file
aaaa
bbbb
cccc dddd
$ cat file | while read line; do echo $line; done
aaaa
bbbb
cccc dddd
$ for line in $(<file); do echo $line; done
aaaa
bbbb
cccc
dddd
== 实践 ===
#! bin/sh
#$str='http://images.stylight.de/static/res200/s2870/2870657.1.jpg%0D'
#echo ${str##*fo}
#echo ${str#fo}
while read line
do
wget -p ${line:0:59}
done < '/root/mysql/mysql.log';