IT技术互动交流平台

FTP服务器管理

作者:levinbin  发布日期:2014-01-22 09:21:56

今天看到51CTO正在搞LinuxShell脚本大赛,特地将自己的处女作发出来,希望能够得到分享。

这里说一下这个脚本的功能,这个脚本主要用来实现VSFTPD服务器的基础管理,主要用于方便运维管理。代码不是很美,还请各位多多指教。

这个代码主要基于本地用户管理、有需求基于LDAP认证管理的朋友,可以联系我,LDAP认证的功能上将更强大了些。

管理界面:

image

代码部份:

read-p"请选择您要做的操作:"caozuocase$caozuoin0)read-p"请输入您要修改密码的用户名:"selectuserwhile[!"$selectuser"]||[!`more/etc/vsftpd/chroot_list|grep-w$selectuser`]doread-p"对不起,您输入的用户名$selectuser不存在,请重新输入要查询的用户名,退出请按q键:"selectuserif["$selectuser"]&&["$selectuser"=="q"];thenexitfidonepasswd$selectuserecho"记录:管理员$adminroot于$timedate1修改用户$selectuser密码">>/opt/vsftp/adminlog/"$adminroot""$timedate2"read-p"您已经成功修改用户$selectuser的密码,按回车键继续操作"var;;1)read-p"请输入您要查询的用户名:"selectuserwhile[!"$selectuser"]||[!`more/etc/vsftpd/chroot_list|grep-w$selectuser`]doecho"记录:管理员$adminroot于$timedate1查询用户$selectuser">>/opt/vsftp/adminlog/"$adminroot""$timedate2"read-p"对不起,查询的用户名$selectuser不存在,请重新输入要查询的用户名,退出请按q键:"selectuserif["$selectuser"]&&["$selectuser"=="q"];thenexitfidoneecho"记录:管理员$adminroot于$timedate1查询用户$selectuser">>/opt/vsftp/adminlog/"$adminroot""$timedate2"read-p"您查询的用户$selectuser为FTP用户,按回车键继续"var;;2)read-p"请输入您需要添加的用户名:"adduserwhile[!"$adduser"]||(["$adduser"]&&[`more/etc/vsftpd/chroot_list|grep-w$adduser`])doread-p"对不起,您的操作有误,用户名不能为空,或您添加的用户已经存在,请重新输入要查询的用户名,退出请按q键:"adduserif["$adduser"]&&["$adduser"=="q"];thenexitfidoneuseradd$adduser-d/opt/vsftp/$adduser-s/sbin/nologinchmod-R777/opt/vsftp/$adduserecho$adduser@123|passwd--stdin$adduserecho"$adduser">>/etc/vsftpd/chroot_listsetquota-u$adduser51200061440000/optcp/etc/vsftpd/vconf/moban/etc/vsftpd/vconf/$adduser

echo"记录:管理员$adminroot于$timedate1添加用户$adduser">>/opt/vsftp/adminlog/"$adminroot""$timedate2"read-p"您添加用户$adduser成功,按回车键继续"var;;3)read-p"请输入您需要删除的用户名:"deluserwhile[!"$deluser"]||[!`more/etc/vsftpd/chroot_list|grep-w$deluser`]doread-p"对不起,您输入的用户名$deluser不存在,请重新输入要删除的用户名,退出请按q键:"deluserif["$deluser"]&&["$deluser"=="q"];thenexitfidoneuserdel$deluserrm-rf/opt/vsftp/$deluser/.gnome2rm-rf/opt/vsftp/$deluser/.bashrcrm-rf/opt/vsftp/$deluser/.bash_profilerm-rf/opt/vsftp/$deluser/.bash_logoutrm-rf/etc/vsftpd/vconf/$deluser

umount/opt/vsftp/$delusermv/opt/vsftp/$deluser/opt/vsftp/bak$deluserrm-rf/opt/vsftp/$delusersed-i"/$deluser/d"/etc/vsftpd/chroot_listsed-i"/$deluser/d"/etc/vsftpd/mountuser.shecho"记录:管理员$adminroot于$timedate1删除用户$deluser">>/opt/vsftp/adminlog/"$adminroot""$timedate2"read-p"您已经成功删除用户$deluser,按回车键继续"var;;4)more/etc/vsftpd/chroot_listread-p"以上为所有FTP用户,按回车键继续"var;;5)read-p"请输入您要查询限额的用户名:"selectquotawhile[!"$selectquota"]||[!`more/etc/vsftpd/chroot_list|grep-w$selectquota`]doread-p"对不起,您输入的用户名$selectquota不存在,请重新输入要查询限额的用户名,退出请按q键:"selectquotaif["$selectquota"]&&[$selectquota==q];thenexitfidonequota$selectquota|sed-n'3p'|echo"当前用户的软限制为:`awk'{print$3}'`KB"quota$selectquota|sed-n'3p'|echo"当前用户的硬限制为:`awk'{print$4}'`KB"echo"记录:管理员$adminroot于$timedate1查询用户$selectquota磁盘限额信息">>/opt/vsftp/adminlog/"$adminroot""$timedate2"read-p"当前用户的磁盘限额如上,按回车键继续"var;;6)read-p"请输入您要修改限额的用户名:"revisequotawhile[!"$revisequota"]||[!`more/etc/vsftpd/chroot_list|grep-w$revisequota`]doread-p"对不起,您输入的用户名$revisequota不存在,请重新输入要查询限额的用户名,退出请按q键:"revisequotaif["$revisequota"]&&[$revisequota==q];thenexitfidonequota$revisequota|sed-n'3p'|echo"修改前用户的软限制为:`awk'{print$3}'`KB"quota$revisequota|sed-n'3p'|echo"修改前用户的硬限制为:`awk'{print$4}'`KB"read-p"请修改您要修改的用户软限制值,默认单位为KB:"quota1while[!$quota1];doread-p"对不起,修改用户的软限制值不能为空,请重新输入软限制值,退出请按q键:"quota1if[$quota1];thenif[$quota1==q];thenexitfifidoneread-p"请修改您要修改的用户硬限制值,默认单位为KB:"quota2while[!$quota2]||[$quota2-lt$quota1];doread-p"对不起,修改用户的硬限制值不能为空,且硬限制的值不能小于软限制的值,请重新输入硬限制值,退出请按q键:"quota2if["$quota2"]&&["$quota2"=="q"];thenexitfidonesetquota-u$revisequota$quota1$quota200/optecho"记录:管理员$adminroot于$timedate1修改用户$revisequota软限制为:$quota1硬限制为:$quota2">>/opt/vsftp/adminlog/"$adminroot""$timedate2"quota$revisequota|sed-n'3p'|echo"修改后用户的软限制为:`awk'{print$3}'`KB"quota$revisequota|sed-n'3p'|echo"修改后用户的硬限制为:`awk'{print$4}'`KB"read-p"当前用户修改后磁盘限额如上,按回车键继续"var;;7)read-p"请输入您要查询的用户名:"selectuserwhile[!$selectuser]||[!`more/etc/vsftpd/chroot_list|grep-w$selectuser`]doread-p"对不起,您查询的用户名$selectuser不存在,请重新输入,退出请按q键:"selectuserif["$selectuser"]&&["$selectuser"=="q"];thenexitfidoneread-p"请输入您要查询的日期(格式:2013-07-1108:32:21):"datetime3while[!$datetime3]doread-p"对不起您的输入有误,日期时间不能空,请重新输入:"datetime3doneread-p"请输入您要查询的操作动作(DELETE、MKDIR、UPLOAD、RMDIR、DOWNLOAD、LOGIN):"opreatewhile[!$opreate]doread-p"对不起,操作动作不能为空,请重新输入:"opreatedonewhile([$opreate!='MKDIR']&&[$opreate!='UPLOAD']&&[$opreate!='DELETE']&&[$opreate!='LOGIN']&&[$opreate!='RMDIR']&&[$opreate!='DOWNLOAD'])doread-p"对不起您输入的操作动作有误,请重新输入:"opreatedoneecho"操作日期|操作时间|操作人|是否成功|操作动作|IP地址|操作内容">/opt/vsftp/ftplog/"$timedate1""$selectuser""$opreate".xlsmore/var/log/messages|grep$selectuser]|grep$opreate|grep$datetime3|awk'{print$1"|"$2"|"$5"|"$6"|"$7"|"$9"|"$10}'>>/opt/vsftp/ftplog/"$timedate1""$selectuser""$opreate".xlssed-i's/://3'/opt/vsftp/ftplog/"$timedate1""$selectuser""$opreate".xlssed-i's/"//g'/opt/vsftp/ftplog/"$timedate1""$selectuser""$opreate".xlssed-i's/\[//'/opt/vsftp/ftplog/"$timedate1""$selectuser""$opreate".xlssed-i's/]//'/opt/vsftp/ftplog/"$timedate1""$selectuser""$opreate".xlssed-i's/,//g'/opt/vsftp/ftplog/"$timedate1""$selectuser""$opreate".xlssed-i's/UPLOAD/上传资料/g'/opt/vsftp/ftplog/"$timedate1""$selectuser""$opreate".xlssed-i's/DELETE/删除文件/g'/opt/vsftp/ftplog/"$timedate1""$selectuser""$opreate".xlssed-i's/LOGIN/用户登录/g'/opt/vsftp/ftplog/"$timedate1""$selectuser""$opreate".xlssed-i's/RMDIR/删除目录/g'/opt/vsftp/ftplog/"$timedate1""$selectuser""$opreate".xlssed-i's/MKDIR/新建目录/g'/opt/vsftp/ftplog/"$timedate1""$selectuser""$opreate".xlssed-i's/DOWNLOAD/下载资料/g'/opt/vsftp/ftplog/"$timedate1""$selectuser""$opreate".xlssed-i's/OK/成功/g'/opt/vsftp/ftplog/"$timedate1""$selectuser""$opreate".xlssed-i's/FAIL/失败/g'/opt/vsftp/ftplog/"$timedate1""$selectuser""$opreate".xlsecho"记录:管理员$adminroot于$timedate1查询用户$selectuser的操作动作$opreate日志">>/opt/vsftp/adminlog/"$adminroot""$timedate2"read-p"直接查看请按a键,下载到Win查看请按b键:"abjianif["$abjian"=="a"];thenmore/opt/vsftp/ftplog/"$timedate1""$selectuser""$opreate".xlsread-p"以上为指定用户的操作日志,按回车键继续操作"varelif["$abjian"=="b"];thencd/opt/vsftp/ftplogsz"$timedate1""$selectuser""$opreate".xlsread-p"指定用户的操作日志已经成功导出到Win,按回车键继续操作"varfi;;8)read-p"请输入您要查询的日期(格式:2012-09-12):"riqiwhile[!$riqi]doread-p"对不起日期不能为空,请重新输入(格式:2012-09-12):"riqidonewhile[`echo$riqi|grep-q'^[1-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]$'&&echo!aa||echoaa`]doread-p"您输入的日期格式错误,请重新输入(格式:2012-09-12):"riqidoneread-p"请输入您要查询的时间,(格式:23:12):"shijianif[!$shijian];thenecho"操作日期|操作时间|操作人|是否成功|操作动作|IP地址|操作内容">/opt/vsftp/ftplog/"$timedate1"查询"$riqi".xlsmore/var/log/messages|grep$riqi|grepvsftpd|awk'{print$1"|"$2"|"$5"|"$6"|"$7"|"$9"|"$10}'>>/opt/vsftp/ftplog/"$timedate1"查询"$riqi".xlssed-i's/://3'/opt/vsftp/ftplog/"$timedate1"查询"$riqi".xlssed-i's/"//g'/opt/vsftp/ftplog/"$timedate1"查询"$riqi".xlssed-i's/\[//'/opt/vsftp/ftplog/"$timedate1"查询"$riqi".xlssed-i's/]//'/opt/vsftp/ftplog/"$timedate1"查询"$riqi".xlssed-i's/,//g'/opt/vsftp/ftplog/"$timedate1"查询"$riqi".xlssed-i's/UPLOAD/上传资料/g'/opt/vsftp/ftplog/"$timedate1"查询"$riqi".xlssed-i's/DELETE/删除文件/g'/opt/vsftp/ftplog/"$timedate1"查询"$riqi".xlssed-i's/LOGIN/用户登录/g'/opt/vsftp/ftplog/"$timedate1"查询"$riqi".xlssed-i's/RMDIR/删除目录/g'/opt/vsftp/ftplog/"$timedate1"查询"$riqi".xlssed-i's/MKDIR/新建目录/g'/opt/vsftp/ftplog/"$timedate1"查询"$riqi".xlssed-i's/DOWNLOAD/下载资料/g'/opt/vsftp/ftplog/"$timedate1"查询"$riqi".xlssed-i's/OK/成功/g'/opt/vsftp/ftplog/"$timedate1"查询"$riqi".xlssed-i's/FAIL/失败/g'/opt/vsftp/ftplog/"$timedate1"查询"$riqi".xlsecho"记录:管理员$adminroot于$timedate1查询日期为:$riqi的所有用户操作记录">>/opt/vsftp/adminlog/"$adminroot""$timedate2"read-p"直接查看请按a键,下载到Win查看请按b键:"abjianif["$abjian"=="a"];thenmore/opt/vsftp/ftplog/"$timedate1"查询"$riqi".xlsread-p"以上为指定用户的操作日志,按回车键继续操作"varelif["$abjian"=="b"];thencd/opt/vsftp/ftplogsz"$timedate1"查询"$riqi".xlsread-p"指定用户的操作日志已经成功导出到Win,按回车键继续操作"varfielsewhile[`echo$shijian|grep-q'^[0-9][0-9]:[0-9][0-9]$'&&echo!aa||echoaa`]doread-p"您输入的时间格式不正确,请重新输入(格式:23:12):"shijiandoneshi=`echo${shijian:0:2}`jian=`echo${shijian:${#shijian}-2:${#shijian}}`echo"操作日期|操作时间|操作人|是否成功|操作动作|IP地址|操作内容">/opt/vsftp/ftplog/"$timedate1"查询"$riqi"-"$shi"."$jian"more/var/log/messages|grep$riqi|grep$shijian|grepvsftpd|awk'{print$1"|"$2"|"$5"|"$6"|"$7"|"$9"|"$10}'>>/opt/vsftp/ftplog/"$timedate1"查询"$riqi"-"$shi"."$jian"sed-i's/://3'/opt/vsftp/ftplog/"$timedate1"查询"$riqi"-"$shi"."$jian"sed-i's/"//g'/opt/vsftp/ftplog/"$timedate1"查询"$riqi"-"$shi"."$jian"sed-i's/\[//'/opt/vsftp/ftplog/"$timedate1"查询"$riqi"-"$shi"."$jian"sed-i's/]//'/opt/vsftp/ftplog/"$timedate1"查询"$riqi"-"$shi"."$jian"sed-i's/,//g'/opt/vsftp/ftplog/"$timedate1"查询"$riqi"-"$shi"."$jian"sed-i's/UPLOAD/上传资料/g'/opt/vsftp/ftplog/"$timedate1"查询"$riqi"-"$shi"."$jian"sed-i's/DELETE/删除文件/g'/opt/vsftp/ftplog/"$timedate1"查询"$riqi"-"$shi"."$jian"sed-i's/LOGIN/用户登录/g'/opt/vsftp/ftplog/"$timedate1"查询"$riqi"-"$shi"."$jian"sed-i's/RMDIR/删除目录/g'/opt/vsftp/ftplog/"$timedate1"查询"$riqi"-"$shi"."$jian"sed-i's/MKDIR/新建目录/g'/opt/vsftp/ftplog/"$timedate1"查询"$riqi"-"$shi"."$jian"sed-i's/DOWNLOAD/下载资料/g'/opt/vsftp/ftplog/"$timedate1"查询"$riqi"-"$shi"."$jian"sed-i's/OK/成功/g'/opt/vsftp/ftplog/"$timedate1"查询"$riqi"-"$shi"."$jian"sed-i's/FAIL/失败/g'/opt/vsftp/ftplog/"$timedate1"查询"$riqi"-"$shi"."$jian"echo"记录:管理员$adminroot于$timedate1查询日期为:$riqi时间为:$shijian的所有用户操作记录">>/opt/vsftp/adminlog/"$adminroot""$timedate2"read-p"直接查看请按a键,下载到Win查看请按b键:"abjianif["$abjian"=="a"];thenmore/opt/vsftp/ftplog/"$timedate1"查询"$riqi"-"$shi"."$jian".xlsread-p"以上为指定用户的操作日志,按回车键继续操作"varelif["$abjian"=="b"];thencd/opt/vsftp/ftplogsz"$timedate1"查询"$riqi"-"$shi"."$jian".xlsread-p"指定用户的操作日志已经成功导出到Win,按回车键继续操作"varfifi;;9)read-p"请输入您要查询的用户名:"selectuserwhile[!$selectuser]doread-p"对不起,查询的用户名不能为空,请重新输入要查询的用户名:"selectuserdonewhile[!`more/etc/vsftpd/chroot_list|grep-o$selectuser`]doread-p"对不起,您查询的用户名不存在,请重新输入要查询的用户名:"selectuserdoneecho"操作日期|操作时间|操作人|是否成功|操作动作|IP地址|操作内容">/opt/vsftp/ftplog/"$timedate1"查询"$selectuser".xlsmore/var/log/messages|grep$selectuser|grepvsftpd|awk'{print$1"|"$2"|"$5"|"$6"|"$7"|"$9"|"$10}'>>/opt/vsftp/ftplog/"$timedate1"查询"$selectuser".xlssed-i's/://3'/opt/vsftp/ftplog/"$timedate1"查询"$selectuser".xlssed-i's/"//g'/opt/vsftp/ftplog/"$timedate1"查询"$selectuser".xlssed-i's/\[//'/opt/vsftp/ftplog/"$timedate1"查询"$selectuser".xlssed-i's/]//'/opt/vsftp/ftplog/"$timedate1"查询"$selectuser".xlssed-i's/,//g'/opt/vsftp/ftplog/"$timedate1"查询"$selectuser".xlssed-i's/UPLOAD/上传资料/g'/opt/vsftp/ftplog/"$timedate1"查询"$selectuser".xlssed-i's/DELETE/删除文件/g'/opt/vsftp/ftplog/"$timedate1"查询"$selectuser".xlssed-i's/LOGIN/用户登录/g'/opt/vsftp/ftplog/"$timedate1"查询"$selectuser".xlssed-i's/RMDIR/删除目录/g'/opt/vsftp/ftplog/"$timedate1"查询"$selectuser".xlssed-i's/MKDIR/新建目录/g'/opt/vsftp/ftplog/"$timedate1"查询"$selectuser".xlssed-i's/DOWNLOAD/下载资料/g'/opt/vsftp/ftplog/"$timedate1"查询"$selectuser".xlssed-i's/OK/成功/g'/opt/vsftp/ftplog/"$timedate1"查询"$selectuser".xlssed-i's/FAIL/失败/g'/opt/vsftp/ftplog/"$timedate1"查询"$selectuser".xlsecho"记录:管理员$adminroot于$timedate1查询日期为:$selectuser的所有用户操作记录">>/opt/vsftp/adminlog/"$adminroot""$timedate2"read-p"直接查看请按a键,下载到Win查看请按b键:"abjianif["$abjian"=="a"];thenmore/opt/vsftp/ftplog/"$timedate1"查询"$selectuser".xlsread-p"以上为指定用户的操作日志,按回车键继续操作"varelif["$abjian"=="b"];thencd/opt/vsftp/ftplogsz"$timedate1"查询"$selectuser".xlsread-p"指定用户的操作日志已经成功导出到Win,按回车键继续操作"varfi;;10)ls/opt/vsftp/ftplog/|moreecho"记录:管理员$adminroot于$timedate1查看了所有导出的用户操作日志文件名">>/opt/vsftp/adminlog/"$adminroot""$timedate2"read-p"以上为所有已导出用户操作日志文件名,按回车键继续"var;;

说明:

由于代码篇幅太大,这里贴出前10项功能代码,希望能够给有需求的朋友能起到一个抛砖引玉的作用。

Tag标签: FTP  
  • 专题推荐

About IT165 - 广告服务 - 隐私声明 - 版权申明 - 免责条款 - 网站地图 - 网友投稿 - 联系方式
本站内容来自于互联网,仅供用于网络技术学习,学习中请遵循相关法律法规