100分寻求一段shell脚本

linux_6 2011-08-25 09:50:31
跪求高手们帮我写一个shell脚本, 100分奉上!!!! 脚本的流程是这样的:

需要传入两个参数: username和passwd。

第一步:在/etc/passwd文件的最后一行添加一行文字:username:x:500:500:::/bin/bash //username为传进来的那个参数。

第二步:以参数username为用户名,参数passwd为密码添加一个samba用户。
注:添加samba用户的命令为:smbpasswd -a 用户名
然后会提示输入密码, 按照它的提示输入参数passwd的值并确认输入即可。
删除samba用户的命令为 :smbpasswd -x 用户名

第三步:在/opt/samba目录下面创建一个以该用户名命名的文件夹。

第四步:然后将下面一段文字写入/etc/samba/smb.conf文件的末尾:
[username]
path = /opt/samba/username
writeable = yes
browseable = yes
public = no
valid users = username
注: 红色的文字username为传进来的参数

第五步: 执行/etc/init.d/smb restart命令来重启samba服务。


以上是这个脚本需要执行的工作,要求具有容错功能,不要堆叠命令, 如果用堆叠命令的方式就不用麻烦各位了,我自己就会。关键是不会写容错。另外还有一个非常重要的要求是当后续步骤出错时,前面执行的操作需要回滚。譬如:在第3步创建文件夹失败的话,需要删除第2步添加的samba用户和第一步中在/etc/passwd文件的最后一行添加的一行文字。

要求基本就是这样,哪位高手能帮我写一下啊? 万分感激!!!!

...全文
140 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
linux_6 2011-08-26
  • 打赏
  • 举报
回复
郁闷啊, 不会又让哥白白浪费100分吧
linux_6 2011-08-26
  • 打赏
  • 举报
回复
继续顶!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
tang_fu 2011-08-26
  • 打赏
  • 举报
回复
不会, 帮顶一下。
linux_6 2011-08-26
  • 打赏
  • 举报
回复
继续顶一下, 相信会有奇迹的到来。
linux_6 2011-08-26
  • 打赏
  • 举报
回复
cqbamboo 2011-08-25
  • 打赏
  • 举报
回复
你可以参考楼上的,其实就是加些判断
完整的程序,写出来太费劲了
wobenpingfan_y 2011-08-25
  • 打赏
  • 举报
回复
我来个
if test -d "/opt/samba/"$1;then //判断目录是否存在


else



fi
linux_6 2011-08-25
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 yyysss520 的回复:]

把各步的处理、回退写成函数,自己把逻辑弄好就ok了。谁没事会蛋疼给你写个容错的。
[/Quote]

汗!!! 我说的容错也就是判断文件是否存在, 命令是否成功之类的, 要是我会的话还蛋疼的在这里发帖???
yyysss520 2011-08-25
  • 打赏
  • 举报
回复
把各步的处理、回退写成函数,自己把逻辑弄好就ok了。谁没事会蛋疼给你写个容错的。
jianzhibeihang 2011-08-25
  • 打赏
  • 举报
回复
我帮顶了....
rucypli 2011-08-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 linux_6 的回复:]
引用 2 楼 zmlovelx 的回复:

开个头:
echo $1:x:500:500:::/bin/bash //$2 >> /etc/passwd


呵呵, 你这个我会的, 但是没有判断是否成功啊
[/Quote]
我接着

if [ $?=0 ] then
linux_6 2011-08-25
  • 打赏
  • 举报
回复
linux_6 2011-08-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zmlovelx 的回复:]

开个头:
echo $1:x:500:500:::/bin/bash //$2 >> /etc/passwd
[/Quote]

呵呵, 你这个我会的, 但是没有判断是否成功啊
linux_6 2011-08-25
  • 打赏
  • 举报
回复
没有人冒个泡了吗?
帅得不敢出门 2011-08-25
  • 打赏
  • 举报
回复
开个头:
echo $1:x:500:500:::/bin/bash //$2 >> /etc/passwd
linux_6 2011-08-25
  • 打赏
  • 举报
回复
应该不是很麻烦吧,我对shell脚本编程不太熟,只会堆叠shell命令,不会做容错判断,请群里的高手们帮一下忙。
linux_6 2011-08-25
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 louyong0571 的回复:]
当后续步骤出错时,前面执行的操作需要回滚。这个比较麻烦,呵呵
[/Quote]

我认为回滚应该很容易的,比如,第一步中向/etc/passwd文件的最后一行添加一行文字, 这时第2步出错了, 我只需要删除第一步中添加的文字即可。 应该很容易吧。
louyong0571 2011-08-25
  • 打赏
  • 举报
回复
当后续步骤出错时,前面执行的操作需要回滚。这个比较麻烦,呵呵

23,116

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧