E语言手游脚本源码-Shell脚本完成SMBA服务帐号配置

目的

通过真实案例完成shell脚本入门

什么壳?

可以在Linux上运行的脚本; 可以减少运维能力,使用脚本完成一系列重复性任务;

今天我就用一个实际案例源码来讲解一下。 这个源码是我实际工作中使用的;

案例要求

场景:我们搭建了一台smba服务器,需要给新用户分配账号和权限,而我们的smba服务器采用的是tdbsam模式;

创建用户所需的过程是:

1.创建系统用户

2. 将用户添加到其他组

3.创建smba账户

5.修复配置文件

6. 重新加载smba配置

看着就麻烦。 如果没有新人进来的话,再重复一遍会很累,所以需要手动执行一个脚本。

shell脚本学习

shell脚本基本上是这样的

#!/bin/sh
#
# 这是创建smba用户创建
# 作者:灵猫说技术
#
#用户岗位
ganwei=(设计岗位 摄影岗位 技术岗位 编辑岗位 AE岗位 管理岗位)
#用户附加组
all_user_group=(kfwui kfwvideo kfwTech kfwEdit kfwAE kfwmg)
echo '本程序创建smba用户...'
echo '--------------------------------'
read -p '请输入用户登录名:' user_name
read -p '输入中文名称:' name
echo "你输入的用户名为:$name"

第一行:#!/bin/sh表示用哪个程序来执行这个脚本,#表示注释

Shell 字段:以空格分隔,无逗号

#用户岗位
ganwei=(设计岗位 摄影岗位 技术岗位 编辑岗位 AE岗位 管理岗位)
#用户附加组
all_user_group=(kfwui kfwvideo kfwTech kfwEdit kfwAE kfwmg)

代码说明:

1. 两个字段的定义如上。 数组中的[value]以空格分隔。 相应的字符串不应有冒号(无论是单冒号还是双冒号)。 除非你的字符有空格,否则建议你不要这样做;

可变参数:等号前后不能有空格

上面的代码解释了一切。 被赋值变量的“=”号前后不能有空格,否则会导致Linux版本的规则出现问题; 下面的代码是错误的;

index = 1  

阐明:

E语言手游脚本源码-Shell脚本完成SMBA服务帐号配置

变量定义直接采用这种格式:变量=值。 【变量】不能有特殊字符,且第一个字符不能是数值;

单冒号和双引号:纯字符使用单冒号,变量使用双引号。

使用echo在屏幕上输出一段内容

echo '本程序创建smba用户...'
echo "本程序创建smba用户..."
echo "你输入的用户名为:$name"

阐明:

1、上述代码中不会出现单冒号或双冒号的句型错误;

2、上面代码的第三行,有一个变量$name。 可以通过两种方式将变量放置在字符逗号中;

格式:“${变量名}”,这个适合任何类型

B格式:$变量名,这只适用于非对象(数组)变量

user_group="${all_user_group[index-1]}"
echo "你输入的用户名为:$name"

提示用户输入

直接上传代码

read -p '请输入用户登录名:' user_name
read -p '输入中文名称:' name

格式:

read -p 输入提示内容变量

变量=用户输入

条件判断:方括号和单个空格

if fi 的两个值是相反的,很容易记住。 最困难的是条件。 很多人被困在这里。

echo "下面都很关键,不可以任意中断....."
read -p "如果确认没有问题,请输入[yes]:" isok
if [ $isok == "yes" ]
then
  echo 'check ok'	
else
   echo '程序退出'	
   exit 0	
fi

阐明:

1.条件必须包含在[]中E语言手游脚本源码,但是这里的[空格]很重要,就是方括号两边必须有一个空格,一个空格,还有一个空格,否则会出现奇怪的错误不同版本的Linux;

2.代码块问题:没有“;” 语句末尾的分号,或其他地方。

我们先来说说“;”的作用

1、空句:表示这个地方什么都没有:“;;”

2.用于句末的分隔。

if [[ ! $user_name =~ ^[a-Z]+$ ]];then
 echo '输入的用户名无效...'
 exit
fi

上面的代码检查输入的用户名中是否有特殊字符,但是有一个“;” 方括号旁边,用于代码分隔。 当然,你也可以不使用“;”按回车换行。

命令函数输出参数问题

date_time=`date "+%Y-%m-%d %H:%M:%S"`

上面获取当前时间并将形参赋予变量date_time,用这个“`”来匹配

如何输入具有多个值的形式参数

  echo -e "$user_passwdn$user_passwd" | pdbedit -t -a $user_name

这行代码也很有趣。 首先要解释的是echo -eE语言手游脚本源码,然后管道符合

pdbedit -t -a username 可以在smba中添加帐户

-t:表示获取输入标准中的输入值;

-a:表示添加用户信息

但这里需要输入两次用户密码; 所以有 echo -e "$user_passwdn$user_passwd"

关键是“n”换行符; 相当于两个输出; 然后使用管道符号将输出转换为pdbedit的输入;

相当于给pdbedit分配了两个参数;

在配置文件中添加配置

echo '开始向配置文件添加一个节点...'
echo "[$name]">>/etc/samba/conf/homes.share
echo "comment = $name">>/etc/samba/conf/homes.share
echo "path = /kfwnas/$name">>/etc/samba/conf/homes.share
echo "browseable = yes">>/etc/samba/conf/homes.share
echo "writable = yes">>/etc/samba/conf/homes.share
echo "read only = yes">>/etc/samba/conf/homes.share
echo "admin users = $user_name">>/etc/samba/conf/homes.share
echo "valid users = $user_name,@$user_group">>/etc/samba/conf/homes.share
echo "write list = $user_name">>/etc/samba/conf/homes.share
echo "public = no">>/etc/samba/conf/homes.share
echo "create mask = 0720">>/etc/samba/conf/homes.share
echo "directory mode = 0720">>/etc/samba/conf/homes.share

双箭头和单箭头说明

>>:表示您想要将信息[附加]到文件中。 该信息位于文件末尾。

>:表示找到信息并截断,例如:t.txt内容如下,我使用cat t.txt

这个是灵猫说技术
今天我在这里很高兴
开始截断吧
我是灵猫爱好技术20年

执行以下语句

echo "开始截断吧">>/ljw/t.txt
cat  t.txt  # 再次看文文本内容,以下为当前文本内容
开始截断吧
我是灵猫爱好技术20年

完整代码请关注我并阅读他的文章【自动化脚本完成smba用户添加脚本源码】

可以发完整代码给我或者私信我,谢谢!

我是一只聊科技的果子狸

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 手游资源 E语言手游脚本源码-Shell脚本完成SMBA服务帐号配置 https://www.wkzy.net/game/199170.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务