本来打算将这个系统重新封装起来以后,再发布出来。但一直忙于工作上面的事情,没能及时处理。今天收到了丁丁历险的Linux脚本大赛的奖品“Linux运维之道”一书,在此特别感谢丁丁,应博友的需求在此发布完整版shell脚本,由于此脚本是个人写的第一个脚本,在写法和语法还有操作上面会有不当或过于繁琐之处,还请各位大侠拍砖。写一个shell的初衷在于让自己更好的认识shell,熟悉shell,熟悉一些语言的语法。
由于脚本中涉及到很多关于VSFTPD的配置目录、权限、syslog系统的配置等问题,可能完全复制过去不能够正常使用,需要进行相应的修改,请各位有需求的朋友根据自己的需求修改,有需要的朋友可以联系我帮忙修改。后续我还是会将整个系统打包封装发布出来的。
#!/bin/bash echo "***********************************************************************************" echo "* *" echo "* 东妮FTP服务器管理系统 V1.1 *" echo "* *" echo "***********************************************************************************" echo "* 用户管理 *" echo "* *" echo "* 选择 0、修改用户密码 选择 4、查看所有FTP用户 *" echo "* 选择 1、查询用户 选择 5、查看用户磁盘限额 *" echo "* 选择 2、添加用户(默认密码:用户名@123) 选择 6、修改用户磁盘限额 *" echo "* 选择 3、删除用户 *" echo "* *" echo "***********************************************************************************" echo "* 日志管理 *" echo "* *" echo "* 选择 7、查询某用户某日期某操作动作 选择 10、查看当前所有导出日志文件名 *" echo "* 选择 8、查询某日期所有用户操作记录 选择 11、查看提定名称的导出日志 *" echo "* 选择 9、查询某用户所有日期操作记录 *" echo "* *" echo "***********************************************************************************" echo "* 管理员操作审计 *" echo "* *" echo "* 选择 15、查询某管理员某天操作记录 选择 17、查看指定文件名记录 *" echo "* 选择 16、查询所有管理员操作文件名 选择 18、导出提定操作文件到Win *" echo "* *" echo "***********************************************************************************" echo "* 网络管理 *" echo "* *" echo "* 选择 20、查看网络状态 选择 25、禁用防火墙 *" echo "* 选择 21、重启网络 选择 26、ping测试 *" echo "* 选择 22、禁用网络 *" echo "* 选择 23、查看防火墙状态 *" echo "* 选择 24、重启防火墙 *" echo "* *" echo "***********************************************************************************" echo "* 系统管理 *" echo "* *" echo "* 选择 30、查询CPU、内存使用情况 选择 35、重启操作系统 *" echo "* 选择 31、查询当前磁盘状态 选择 36、计划重启 *" echo "* 选择 32、查询系统当前时间 选择 37、计划关机 *" echo "* 选择 33、修改系统当前日期时间 选择 38、取消计划关机或重启 *" echo "* 选择 34、关闭操作系统 *" echo "* *" echo "***********************************************************************************" echo "* 高级权限管理 *" echo "* *" echo "* 选择 40、只能下载 选择 43、完全权限 *" echo "* 选择 41、只能上传 选择 44、查看用户权限 *" echo "* 选择 42、只能下载与上传 选择 45、单用户管理多用户 *" echo "* *" echo "***********************************************************************************" echo "* 其它功能 *" echo "* *" echo "* 选择 46、查看当前在线用户 *" echo "* *" echo "***********************************************************************************" read -p "请选择您要做的操作:" caozuo case $caozuo in 0) read -p "请输入您要修改密码的用户名: " selectuser while [ ! "$selectuser" ] || [ ! `more /etc/vsftpd/chroot_list | grep -w $selectuser` ] do read -p "对不起,您输入的用户名$selectuser不存在,请重新输入要查询的用户名,退出请按q键: " selectuser if [ "$selectuser" ] && [ "$selectuser" == "q" ];then exit fi done passwd $selectuser echo "记录: 管理员$adminroot于$timedate1修改用户$selectuser密码" >> /opt/vsftp/adminlog/"$adminroot""$timedate2" read -p "您已经成功修改用户$selectuser的密码,按回车键继续操作" var ;; 1) read -p "请输入您要查询的用户名: " selectuser while [ ! "$selectuser" ] || [ ! `more /etc/vsftpd/chroot_list | grep -w $selectuser` ] do echo "记录: 管理员$adminroot于$timedate1查询用户$selectuser" >> /opt/vsftp/adminlog/"$adminroot""$timedate2" read -p "对不起,查询的用户名$selectuser不存在,请重新输入要查询的用户名,退出请按q键: " selectuser if [ "$selectuser" ] && [ "$selectuser" == "q" ];then exit fi done echo "记录: 管理员$adminroot于$timedate1查询用户$selectuser" >> /opt/vsftp/adminlog/"$adminroot""$timedate2" read -p "您查询的用户$selectuser为FTP用户,按回车键继续" var ;; 2) read -p "请输入您需要添加的用户名: " adduser while [ ! "$adduser" ] || ( [ "$adduser" ] && [ `more /etc/vsftpd/chroot_list | grep -w $adduser` ] ) do read -p "对不起,您的操作有误,用户名不能为空,或您添加的用户已经存在,请重新输入要查询的用户名,退出请按q键: " adduser if [ "$adduser" ] && [ "$adduser" == "q" ];then exit fi done useradd $adduser -d /opt/vsftp/$adduser -s /sbin/nologin chmod -R 777 /opt/vsftp/$adduser echo $adduser@123 | passwd --stdin $adduser echo "$adduser" >> /etc/vsftpd/chroot_list setquota -u $adduser 512000 614400 0 0 /opt cp /etc/vsftpd/vconf/moban /etc/vsftpd/vconf/$adduser echo "记录: 管理员$adminroot于$timedate1添加用户$adduser" >> /opt/vsftp/adminlog/"$adminroot""$timedate2" read -p "您添加用户$adduser成功,按回车键继续" var ;; 3) read -p "请输入您需要删除的用户名: " deluser while [ ! "$deluser" ] || [ ! `more /etc/vsftpd/chroot_list | grep -w $deluser` ] do read -p "对不起,您输入的用户名$deluser不存在,请重新输入要删除的用户名,退出请按q键: " deluser if [ "$deluser" ] && [ "$deluser" == "q" ];then exit fi done userdel $deluser rm -rf /opt/vsftp/$deluser/.gnome2 rm -rf /opt/vsftp/$deluser/.bashrc rm -rf /opt/vsftp/$deluser/.bash_profile rm -rf /opt/vsftp/$deluser/.bash_logout rm -rf /etc/vsftpd/vconf/$deluser # umount /opt/vsftp/$deluser/public # rm -rf /opt/vsftp/$deluser/public umount /opt/vsftp/$deluser mv /opt/vsftp/$deluser /opt/vsftp/bak$deluser rm -rf /opt/vsftp/$deluser sed -i "/$deluser/d" /etc/vsftpd/chroot_list sed -i "/$deluser/d" /etc/vsftpd/mountuser.sh # sed -i "/$deluser/d" /etc/vsftpd/mountpublic.sh echo "记录: 管理员$adminroot于$timedate1删除用户$deluser" >> /opt/vsftp/adminlog/"$adminroot""$timedate2" read -p "您已经成功删除用户$deluser,按回车键继续" var ;; 4) more /etc/vsftpd/chroot_list read -p "以上为所有FTP用户,按回车键继续" var ;; 5) read -p "请输入您要查询限额的用户名: " selectquota while [ ! "$selectquota" ] || [ ! `more /etc/vsftpd/chroot_list | grep -w $selectquota` ] do read -p "对不起,您输入的用户名$selectquota不存在,请重新输入要查询限额的用户名,退出请按q键: " selectquota if [ "$selectquota" ] && [ $selectquota == q ];then exit fi done quota $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 "请输入您要修改限额的用户名: " revisequota while [ ! "$revisequota" ] || [ ! `more /etc/vsftpd/chroot_list | grep -w $revisequota` ] do read -p "对不起,您输入的用户名$revisequota不存在,请重新输入要查询限额的用户名,退出请按q键: " revisequota if [ "$revisequota" ] && [ $revisequota == q ];then exit fi done quota $revisequota | sed -n '3p' | echo "修改前用户的软限制为: `awk '{print $3}'`KB" quota $revisequota | sed -n '3p' | echo "修改前用户的硬限制为: `awk '{print $4}'`KB" read -p "请修改您要修改的用户软限制值,默认单位为KB: " quota1 while [ ! $quota1 ]; do read -p "对不起,修改用户的软限制值不能为空,请重新输入软限制值,退出请按q键: " quota1 if [ $quota1 ];then if [ $quota1 == q ];then exit fi fi done read -p "请修改您要修改的用户硬限制值,默认单位为KB: " quota2 while [ ! $quota2 ] || [ $quota2 -lt $quota1 ]; do read -p "对不起,修改用户的硬限制值不能为空,且硬限制的值不能小于软限制的值,请重新输入硬限制值,退出请按q键: " quota2 if [ "$quota2" ] && [ "$quota2" == "q" ];then exit fi done setquota -u $revisequota $quota1 $quota2 0 0 /opt echo "记录: 管理员$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 "请输入您要查询的用户名: " selectuser while [ ! $selectuser ] || [ ! `more /etc/vsftpd/chroot_list | grep -w $selectuser` ] do read -p "对不起,您查询的用户名$selectuser不存在,请重新输入,退出请按q键: " selectuser if [ "$selectuser" ] && [ "$selectuser" == "q" ];then exit fi done read -p "请输入您要查询的日期(格式:2013-07-11 08:32:21): " datetime3 while [ ! $datetime3 ] do read -p "对不起您的输入有误,日期时间不能空,请重新输入: " datetime3 done read -p "请输入您要查询的操作动作(DELETE、MKDIR、UPLOAD、RMDIR、DOWNLOAD、LOGIN): " opreate while [ ! $opreate ] do read -p "对不起,操作动作不能为空,请重新输入: " opreate done while ( [ $opreate != 'MKDIR' ] && [ $opreate != 'UPLOAD' ] && [ $opreate != 'DELETE' ] && [ $opreate != 'LOGIN' ] && [ $opreate != 'RMDIR' ] && [ $o preate != 'DOWNLOAD' ] ) do read -p "对不起您输入的操作动作有误,请重新输入: " opreate done echo " 操作日期|操作时间|操作人|是否成功|操作动作|IP地址|操作内容" > /opt/vsftp/ftplog/"$timedate1""$selectuser""$opreate".xls more /var/log/messages | grep $selectuser] | grep $opreate | grep $datetime3 | awk '{print $1"|"$2"|"$5"|"$6"|"$7"|"$9"|"$10 }' >> /opt/vsftp/ftplog/ "$timedate1""$selectuser""$opreate".xls sed -i 's/://3' /opt/vsftp/ftplog/"$timedate1""$selectuser""$opreate".xls sed -i 's/"//g' /opt/vsftp/ftplog/"$timedate1""$selectuser""$opreate".xls sed -i 's/\[//' /opt/vsftp/ftplog/"$timedate1""$selectuser""$opreate".xls sed -i 's/]//' /opt/vsftp/ftplog/"$timedate1""$selectuser""$opreate".xls sed -i 's/,//g' /opt/vsftp/ftplog/"$timedate1""$selectuser""$opreate".xls sed -i 's/UPLOAD/上传资料/g' /opt/vsftp/ftplog/"$timedate1""$selectuser""$opreate".xls sed -i 's/DELETE/删除文件/g' /opt/vsftp/ftplog/"$timedate1""$selectuser""$opreate".xls sed -i 's/LOGIN/用户登录/g' /opt/vsftp/ftplog/"$timedate1""$selectuser""$opreate".xls sed -i 's/RMDIR/删除目录/g' /opt/vsftp/ftplog/"$timedate1""$selectuser""$opreate".xls sed -i 's/MKDIR/新建目录/g' /opt/vsftp/ftplog/"$timedate1""$selectuser""$opreate".xls sed -i 's/DOWNLOAD/下载资料/g' /opt/vsftp/ftplog/"$timedate1""$selectuser""$opreate".xls sed -i 's/OK/成功/g' /opt/vsftp/ftplog/"$timedate1""$selectuser""$opreate".xls sed -i 's/FAIL/失败/g' /opt/vsftp/ftplog/"$timedate1""$selectuser""$opreate".xls echo "记录: 管理员$adminroot于$timedate1查询用户$selectuser的操作动作$opreate日志" >> /opt/vsftp/adminlog/"$adminroot""$timedate2" read -p "直接查看请按a键,下载到Win查看请按b键: " abjian if [ "$abjian" == "a" ];then more /opt/vsftp/ftplog/"$timedate1""$selectuser""$opreate".xls read -p "以上为指定用户的操作日志,按回车键继续操作" var elif [ "$abjian" == "b" ];then cd /opt/vsftp/ftplog sz "$timedate1""$selectuser""$opreate".xls read -p "指定用户的操作日志已经成功导出到Win,按回车键继续操作" var fi ;; 8) read -p "请输入您要查询的日期(格式:2012-09-12): " riqi while [ ! $riqi ] do read -p "对不起日期不能为空,请重新输入(格式:2012-09-12): " riqi done while [ `echo $riqi | grep -q '^[1-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]$' && echo ! aa || echo aa` ] do read -p "您输入的日期格式错误,请重新输入(格式:2012-09-12): " riqi done read -p "请输入您要查询的时间,(格式:23:12): " shijian if [ ! $shijian ];then echo " 操作日期|操作时间|操作人|是否成功|操作动作|IP地址|操作内容" > /opt/vsftp/ftplog/"$timedate1"查询"$riqi".xls more /var/log/messages | grep $riqi | grep vsftpd | awk '{print $1"|"$2"|"$5"|"$6"|"$7"|"$9"|"$10 }' >> /opt/vsftp/ftplog/"$timedate1"查询"$riqi".xls sed -i 's/://3' /opt/vsftp/ftplog/"$timedate1"查询"$riqi".xls sed -i 's/"//g' /opt/vsftp/ftplog/"$timedate1"查询"$riqi".xls sed -i 's/\[//' /opt/vsftp/ftplog/"$timedate1"查询"$riqi".xls sed -i 's/]//' /opt/vsftp/ftplog/"$timedate1"查询"$riqi".xls sed -i 's/,//g' /opt/vsftp/ftplog/"$timedate1"查询"$riqi".xls sed -i 's/UPLOAD/上传资料/g' /opt/vsftp/ftplog/"$timedate1"查询"$riqi".xls sed -i 's/DELETE/删除文件/g' /opt/vsftp/ftplog/"$timedate1"查询"$riqi".xls sed -i 's/LOGIN/用户登录/g' /opt/vsftp/ftplog/"$timedate1"查询"$riqi".xls sed -i 's/RMDIR/删除目录/g' /opt/vsftp/ftplog/"$timedate1"查询"$riqi".xls sed -i 's/MKDIR/新建目录/g' /opt/vsftp/ftplog/"$timedate1"查询"$riqi".xls sed -i 's/DOWNLOAD/下载资料/g' /opt/vsftp/ftplog/"$timedate1"查询"$riqi".xls sed -i 's/OK/成功/g' /opt/vsftp/ftplog/"$timedate1"查询"$riqi".xls sed -i 's/FAIL/失败/g' /opt/vsftp/ftplog/"$timedate1"查询"$riqi".xls echo "记录: 管理员$adminroot于$timedate1查询日期为:$riqi的所有用户操作记录" >> /opt/vsftp/adminlog/"$adminroot""$timedate2" read -p "直接查看请按a键,下载到Win查看请按b键: " abjian if [ "$abjian" == "a" ];then more /opt/vsftp/ftplog/"$timedate1"查询"$riqi".xls read -p "以上为指定用户的操作日志,按回车键继续操作" var elif [ "$abjian" == "b" ];then cd /opt/vsftp/ftplog sz "$timedate1"查询"$riqi".xls read -p "指定用户的操作日志已经成功导出到Win,按回车键继续操作" var fi else while [ `echo $shijian | grep -q '^[0-9][0-9]:[0-9][0-9]$' && echo ! aa || echo aa` ] do read -p "您输入的时间格式不正确,请重新输入(格式:23:12): " shijian done shi=`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 | grep vsftpd | awk '{print $1"|"$2"|"$5"|"$6"|"$7"|"$9"|" $10 }' >> /opt/vsftp/ftplog/"$timedate 1"查询"$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键: " abjian if [ "$abjian" == "a" ];then more /opt/vsftp/ftplog/"$timedate1"查询"$riqi"-"$shi"."$jian".xls read -p "以上为指定用户的操作日志,按回车键继续操作" var elif [ "$abjian" == "b" ];then cd /opt/vsftp/ftplog sz "$timedate1"查询"$riqi"-"$shi"."$jian".xls read -p "指定用户的操作日志已经成功导出到Win,按回车键继续操作" var fi fi ;; 9) read -p "请输入您要查询的用户名: " selectuser while [ ! $selectuser ] do read -p "对不起,查询的用户名不能为空,请重新输入要查询的用户名: " selectuser done while [ ! `more /etc/vsftpd/chroot_list | grep -o $selectuser` ] do read -p "对不起,您查询的用户名不存在,请重新输入要查询的用户名: " selectuser done echo "操作日期|操作时间|操作人|是否成功|操作动作|IP地址|操作内容" > /opt/vsftp/ftplog/"$timedate1"查询"$selectuser".xls more /var/log/messages | grep $selectuser | grep vsftpd | awk '{print $1 "|" $2 "|" $5 "|" $6 "|"$7 "|" $9 "|" $10 }' >> /opt/vsftp/ftplog/"$timedate 1"查询"$selectuser".xls sed -i 's/://3' /opt/vsftp/ftplog/"$timedate1"查询"$selectuser".xls sed -i 's/"//g' /opt/vsftp/ftplog/"$timedate1"查询"$selectuser".xls sed -i 's/\[//' /opt/vsftp/ftplog/"$timedate1"查询"$selectuser".xls sed -i 's/]//' /opt/vsftp/ftplog/"$timedate1"查询"$selectuser".xls sed -i 's/,//g' /opt/vsftp/ftplog/"$timedate1"查询"$selectuser".xls sed -i 's/UPLOAD/上传资料/g' /opt/vsftp/ftplog/"$timedate1"查询"$selectuser".xls sed -i 's/DELETE/删除文件/g' /opt/vsftp/ftplog/"$timedate1"查询"$selectuser".xls sed -i 's/LOGIN/用户登录/g' /opt/vsftp/ftplog/"$timedate1"查询"$selectuser".xls sed -i 's/RMDIR/删除目录/g' /opt/vsftp/ftplog/"$timedate1"查询"$selectuser".xls sed -i 's/MKDIR/新建目录/g' /opt/vsftp/ftplog/"$timedate1"查询"$selectuser".xls sed -i 's/DOWNLOAD/下载资料/g' /opt/vsftp/ftplog/"$timedate1"查询"$selectuser".xls sed -i 's/OK/成功/g' /opt/vsftp/ftplog/"$timedate1"查询"$selectuser".xls sed -i 's/FAIL/失败/g' /opt/vsftp/ftplog/"$timedate1"查询"$selectuser".xls echo "记录: 管理员$adminroot于$timedate1查询日期为:$selectuser的所有用户操作记录" >> /opt/vsftp/adminlog/"$adminroot""$timedate2" read -p "直接查看请按a键,下载到Win查看请按b键: " abjian if [ "$abjian" == "a" ];then more /opt/vsftp/ftplog/"$timedate1"查询"$selectuser".xls read -p "以上为指定用户的操作日志,按回车键继续操作" var elif [ "$abjian" == "b" ];then cd /opt/vsftp/ftplog sz "$timedate1"查询"$selectuser".xls read -p "指定用户的操作日志已经成功导出到Win,按回车键继续操作" var fi ;; 10) ls /opt/vsftp/ftplog/ | more echo "记录: 管理员$adminroot于$timedate1查看了所有导出的用户操作日志文件名" >> /opt/vsftp/adminlog/"$adminroot""$timedate2" read -p "以上为所有已导出用户操作日志文件名,按回车键继续" var ;; 11) read -p "请输入您要查看的用户操作日志文件名: " opreatefile while [ ! $opreatefile ] do read -p "对不起,您输入的文件名不能为空,请重新输入: " opreatefile done filelist=`ls /opt/vsftp/ftplog/ | grep -w ^\$opreatefile\$` while [ "$filelist" != "$opreatefile" ] do read -p "对不起,你输入的文件名不存在,请重新输入文件名: " opreatefile filelist=`ls /opt/vsftp/ftplog/ | grep -w ^\$opreatefile\$` done more /opt/vsftp/ftplog/$opreatefile echo "记录: 管理员$adminroot于$timedate1查看了用户操作日志文件:$opreatefile" >> /opt/vsftp/adminlog/"$adminroot""$timedate2" read -p "以上为您查询的操作日志文件$opreatefile全部内容,按回车键继续" var ;; 15) read -p "请输入审计管理员用户名: " auditadmin read -p "请输入审计管理员密码: " -s auditpasswd while [ "$auditadmin" != "admin45930" ] || [ "$auditpasswd" != "SOHU123" ] do read -p "对不起,您输入的用户名或密码不正确,请重新输入审计管理员用户名: " auditadmin read -p "对不起,您输入的用户名或密码不正确,请重新输入审计管理员密码: " -s auditpasswd done read -p "请输入您要查询的管理员名字: " rootadmin while [ ! $rootadmin ] do read -p "对不起管理员名字不能为空,请重新输入: " rootadmin done read -p "请输入您要查询的操作日期(格式:20130711): " opreatetime while [ ! $opreatetime ] do read -p "对不起操作日期不能为空,请重新输入: " opreatetime done while [ ! `ls /opt/vsftp/adminlog/* | grep "$rootadmin""$opreatetime"` ] do read -p "对不起,您查询的操作信息不存在,按回车键继续: " var exit done more /opt/vsftp/adminlog/$rootadmin$opreatetime echo "记录: 审计管理员$auditadmin于$timedate1审计了管理员$rootadmin操作记录" >> /opt/vsftp/adminlog/"$auditadmin""$timedate2" read -p "以上为管理员$rootadmin于$opreatetime操作记录,按回车键继续" var ;; 16) read -p "请输入审计管理员用户名: " auditadmin read -p "请输入审计管理员密码: " -s auditpasswd while [ "$auditadmin" != "admin45930" ] || [ "$auditpasswd" != "SOHU123" ] do read -p "对不起,您输入的用户名或密码不正确,请重新输入审计管理员用户名: " auditadmin read -p "对不起,您输入的用户名或密码不正确,请重新输入审计管理员密码: " -s auditpasswd done ls /opt/vsftp/adminlog/ | more echo "记录: 审计管理员$auditadmin于$timedate1查询了所有管理员操作记录文件" >> /opt/vsftp/adminlog/"$auditadmin""$timedate2" read -p "以上为所有管理员操作记录文件,按回车键继续" var ;; 17) read -p "请输入审计管理员用户名: " auditadmin read -p "请输入审计管理员密码: " -s auditpasswd while [ "$auditadmin" != "admin45930" ] || [ "$auditpasswd" != "SOHU123" ] do read -p "对不起,您输入的用户名或密码不正确,请重新输入审计管理员用户名: " auditadmin read -p "对不起,您输入的用户名或密码不正确,请重新输入审计管理员密码: " -s auditpasswd done read -p "请输入您要查看的管理员操作文件: " opreatefile filelist=`ls /opt/vsftp/adminlog/ | grep -w ^\$opreatefile\$` while [ "$filelist" != "$opreatefile" ] do read -p "对不起,你输入的文件名不存在,请重新输入文件名: " opreatefile filelist=`ls /opt/vsftp/adminlog/ | grep -w ^\$opreatefile\$` done more /opt/vsftp/adminlog/$opreatefile echo "记录: 审计管理员$rootadmin于$timedate1审计了$opreatefile管理员操作文件" >> /opt/vsftp/adminlog/"$adminroot""$timedate2" read -p "以上为您查询的操作日志文件$opreatefile全部内容,按回车键继续" var ;; 18) read -p "请输入审计管理员用户名: " auditadmin read -p "请输入审计管理员密码: " -s auditpasswd while [ "$auditadmin" != "admin45930" ] || [ "$auditpasswd" != "SOHU123" ] do read -p "对不起,您输入的用户名或密码不正确,请重新输入审计管理员用户名: " auditadmin read -p "对不起,您输入的用户名或密码不正确,请重新输入审计管理员密码: " -s auditpasswd done read -p "请输入您要查看的管理员操作文件: " opreatefile filelist=`ls /opt/vsftp/adminlog/ | grep -w ^\$opreatefile\$` while [ "$filelist" != "$opreatefile" ] do read -p "对不起,你输入的文件名不存在,请重新输入文件名: " opreatefile filelist=`ls /opt/vsftp/adminlog/ | grep -w ^\$opreatefile\$` done cd /opt/vsftp/adminlog/ sz $opreatefile echo "记录: 审计管理员$rootadmin于$timedate1导出$opreatefile管理员操作文件" >> /opt/vsftp/adminlog/"$adminroot""$timedate2" read -p "您已经成功导出$opreatefile管理员操作文件,按回车键继续" var ;; 20) service network status echo "记录: 管理员$adminroot于$timedate1查看网络状态" >> /opt/vsftp/adminlog/"$adminroot""$timedate2" read -p "以上为当前网络状态,按回车键继续" var ;; 21) service network restart echo "记录: 管理员$adminroot于$timedate1重启网络" >> /opt/vsftp/adminlog/"$adminroot""$timedate2" read -p "以上为网络重启状态,如不正常,请联系超级管理员,按回车键继续" var ;; 22) service network stop echo "记录: 管理员$adminroot于$timedate1禁用网络" >> /opt/vsftp/adminlog/"$adminroot""$timedate2" read -p "以上为网络禁用状态,如不正常,请联系超级管理员,按回车键继续" var ;; 23) service iptables status echo "记录: 管理员$adminroot于$timedate1查看防火墙状态" >> /opt/vsftp/adminlog/"$adminroot""$timedate2" read -p "以上为当前防火墙状态,如不正常,请联系超级管理员,按回车键继续" var ;; 24) service iptables restart echo "记录: 管理员$adminroot于$timedate1重启防火墙" >> /opt/vsftp/adminlog/"$adminroot""$timedate2" read -p "以上为防火墙重启状态,如不正常,请联系超级管理员,按回车键继续" var ;; 25) service iptables stop echo "记录: 管理员$adminroot于$timedate1禁用防火墙" >> /opt/vsftp/adminlog/"$adminroot""$timedate2" read -p "以上为防火墙禁用状态,如不正常,请联系超级管理员,按回车键继续" var ;; 26) read -p "请输入您要ping的IP地址: " pingIP while [ ! $pingIP ] do read -p "对不起,IP地址不能为空,请重新输入: " pingIP done echo "记录: 管理员$adminroot于$timedate1对IP:$pingIP进行了连通性测试" >> /opt/vsftp/adminlog/"$adminroot""$timedate2" ping -c 5 $pingIP read -p "以上为连通性测试结果,按回车键继续" var ;; 30) awk '$1=="cpu"{Total=$2+$3+$4+$5+$6+$7;print "当前剩余CPU: " $5/Total*100"% \n当前已使用CPU: " (Total-$5)*100/Total"%"}' > /opt/vsftp/adminlog/"$adminroot""$timedate2" read -p "以上为当前系统CPU内存使用情况,按回车键继续" var ;; 31) df | grep /dev/sda5 | echo "存储空间已用: `awk '{print $3}'`" df | grep /dev/sda5 | echo "存储空间可用: `awk '{print $4}'`" df | grep /dev/sda5 | echo "已用百分比:`awk '{print $5}'`" echo "记录: 管理员$adminroot于$timedate1查看了存储空间使用情况" >> /opt/vsftp/adminlog/"$adminroot""$timedate2" read -p "以上为当前存储空间使用情况,按回车键继续" var ;; 32) date echo "记录: 管理员$adminroot于$timedate1查看了当前系统时间" >> /opt/vsftp/adminlog/"$adminroot""$timedate2" read -p "以上为当前系统时间,按回车继续" var ;; 33) read -p "请输入要修改的日期时间(格式:2013-07-11 20:22:11)" revisetime while [ ! "$revisetime" ] do read -p "对不起,修改时间不能为空,请重新输入: " revisetime done date -s "$revisetime" echo "记录: 管理员$adminroot于$timedate1修改系统时间为$revisetime" >> /opt/vsftp/adminlog/"$adminroot""$timedate2" read -p "以上为修改后时间,按回车键继续" var ;; 34) read -p "你真的要关机吗?是请按y,否则按q键退出: " YES if [ $YES == y ];then echo "记录: 管理员$adminroot于$timedate1关闭服务器" >> /opt/vsftp/adminlog/"$adminroot""$timedate2" shutdown -h now elif [ $YES == q ];then echo "记录: 管理员$adminroot于$timedate1退出了关闭服务器操作" >> /opt/vsftp/adminlog/"$adminroot""$timedate2" exit fi ;; 35) read -p "你真得要重启吗?是请按y,否则按q键退出: " YES if [ $YES == y ];then echo "记录: 管理员$adminroot于$timedate1重启服务器" >> /opt/vsftp/adminlog/"$adminroot""$timedate2" shutdown -r now elif [ $YES == q ];then echo "记录: 管理员$adminroot于$timedate1退出了重启服务器操作" >> /opt/vsftp/adminlog/"$adminroot""$timedate2" exit fi ;; 36) read -p "请输入你计划关机时间,以分钟为单位: " sec echo "记录: 管理员$adminroot于$timedate1设置计划关机任务于$sec分钟后关闭服务器" >> /opt/vsftp/adminlog/"$adminroot""$timedate2" shutdown -h +$sec & read -p "您已计划$sec分钟后关闭服务器,按回车键继续" var ;; 37) read -p "请输入你计划重启时间,以分钟为单位: " sec echo "记录: 管理员$adminroot于$timedate1设置计划重启任务于$sec分钟后重启服务器" >> /opt/vsftp/adminlog/"$adminroot""$timedate2" shutdown -r +$sec & read -p "您已计划$sec分钟后重启服务器,按回车键继续" var ;; 38) shutdown -c echo "记录: 管理员$adminroot于$timedate1取消了计划任务重启或关闭服务器的操作" >> /opt/vsftp/adminlog/"$adminroot""$timedate2" read -p "您已取消重启关机服务器计划,按回车键继续" var ;; 40) read -p "请输入您要修改权限的用户名: " xiugaiuser while [ ! "$xiugaiuser" ] || [ ! `more /etc/vsftpd/chroot_list | grep -w $xiugaiuser` ] do read -p "对不起,您输入的用户名$xiugaiuser不存在,请重新输入用户名,退出请按q键: " xiugaiuser if [ "$xiugaiuser" ] && [ $xiugaiuser == q ];then exit fi done sed -i "s/^#cmds_allowed=RETR,ABOR,CWD,CDUP,LIST,MDTM,NLST,PASS,PASV,PORT,PWD,QUIT,SITE,SIZE,TYPE,USER$/cmds_allowed=RETR,ABOR,CWD,CDUP,LIST,MDTM,NLS T,PASS,PASV,PORT,PWD,QUIT,SITE,SIZE,TYPE,USER/g" /etc/vsftpd/vconf/$xiugaiuser sed -i "s/^cmds_allowed=STOR,MKD,ABOR,CDUP,CWD,LIST,MDTM,NLST,PASS,PASV,PORT,PWD,QUIT,SITE,SIZE,TYPE,USER$/#cmds_allowed=STOR,MKD,ABOR,CDUP,CWD,LIST, MDTM,NLST,PASS,PASV,PORT,PWD,QUIT,SITE,SIZE,TYPE,USER/g" /etc/vsftpd/vconf/$xiugaiuser sed -i "s/^cmds_allowed=STOR,RETR,MKD,ABOR,CDUP,CWD,LIST,MDTM,NLST,PASS,PASV,PORT,PWD,QUIT,SITE,SIZE,TYPE,USER/#cmds_allowed=STOR,RETR,MKD,ABOR,CDUP, CWD,LIST,MDTM,NLST,PASS,PASV,PORT,PWD,QUIT,SITE,SIZE,TYPE,USER/g" /etc/vsftpd/vconf/$xiugaiuser read -p "您已成功修改$xiugaiuser权限为只能下载权限,按回车键继续" var echo "记录: 管理员$adminroot于$timedate1修改$xiugaiuser权限为只能下载权限" >> /opt/vsftp/adminlog/"$adminroot""$timedate2" ;; 41) read -p "请输入您要修改权限的用户名: " xiugaiuser while [ ! "$xiugaiuser" ] || [ ! `more /etc/vsftpd/chroot_list | grep -w $xiugaiuser` ] do read -p "对不起,您输入的用户名$xiugaiuser不存在,请重新输入用户名,退出请按q键: " xiugaiuser if [ "$xiugaiuser" ] && [ $xiugaiuser == q ];then exit fi done sed -i "s/^cmds_allowed=STOR,RETR,MKD,ABOR,CDUP,CWD,LIST,MDTM,NLST,PASS,PASV,PORT,PWD,QUIT,SITE,SIZE,TYPE,USER/#cmds_allowed=STOR,RETR,MKD,ABOR,CDUP, CWD,LIST,MDTM,NLST,PASS,PASV,PORT,PWD,QUIT,SITE,SIZE,TYPE,USER/g" /etc/vsftpd/vconf/$xiugaiuser sed -i "s/^cmds_allowed=RETR,ABOR,CWD,CDUP,LIST,MDTM,NLST,PASS,PASV,PORT,PWD,QUIT,SITE,SIZE,TYPE,USER/#cmds_allowed=RETR,ABOR,CWD,CDUP,LIST,MDTM,NLST ,PASS,PASV,PORT,PWD,QUIT,SITE,SIZE,TYPE,USER/g" /etc/vsftpd/vconf/$xiugaiuser sed -i "s/^#cmds_allowed=STOR,MKD,ABOR,CDUP,CWD,LIST,MDTM,NLST,PASS,PASV,PORT,PWD,QUIT,SITE,SIZE,TYPE,USER$/cmds_allowed=STOR,MKD,ABOR,CDUP,CWD,LIST, MDTM,NLST,PASS,PASV,PORT,PWD,QUIT,SITE,SIZE,TYPE,USER/g" /etc/vsftpd/vconf/$xiugaiuser read -p "您已成功修改$xiugaiuser权限为只能上传与新建,按回车键继续" var echo "记录: 管理员$adminroot于$timedate1修改$xiugaiuser权限为只能上传与新建" >> /opt/vsftp/adminlog/"$adminroot""$timedate2" ;; 42) read -p "请输入您要修改权限的用户名: " xiugaiuser while [ ! "$xiugaiuser" ] || [ ! `more /etc/vsftpd/chroot_list | grep -w $xiugaiuser` ] do read -p "对不起,您输入的用户名$xiugaiuser不存在,请重新输入用户名,退出请按q键: " xiugaiuser if [ "$xiugaiuser" ] && [ $xiugaiuser == q ];then exit fi done sed -i "s/^cmds_allowed=RETR,ABOR,CWD,CDUP,LIST,MDTM,NLST,PASS,PASV,PORT,PWD,QUIT,SITE,SIZE,TYPE,USER$/#cmds_allowed=RETR,ABOR,CWD,CDUP,LIST,MDTM,NLS T,PASS,PASV,PORT,PWD,QUIT,SITE,SIZE,TYPE,USER/g" /etc/vsftpd/vconf/$xiugaiuser sed -i "s/^cmds_allowed=STOR,MKD,ABOR,CDUP,CWD,LIST,MDTM,NLST,PASS,PASV,PORT,PWD,QUIT,SITE,SIZE,TYPE,USER$/#cmds_allowed=STOR,MKD,ABOR,CDUP,CWD,LIST, MDTM,NLST,PASS,PASV,PORT,PWD,QUIT,SITE,SIZE,TYPE,USER/g" /etc/vsftpd/vconf/$xiugaiuser sed -i "s/^#cmds_allowed=STOR,RETR,MKD,ABOR,CDUP,CWD,LIST,MDTM,NLST,PASS,PASV,PORT,PWD,QUIT,SITE,SIZE,TYPE,USER/cmds_allowed=STOR,RETR,MKD,ABOR,CDUP, CWD,LIST,MDTM,NLST,PASS,PASV,PORT,PWD,QUIT,SITE,SIZE,TYPE,USER/g" /etc/vsftpd/vconf/$xiugaiuser read -p "您已成功修改$xiugaiuser权限为只能下载与上传新建,按回车键继续" var echo "记录: 管理员$adminroot于$timedate1修改$xiugaiuser权限为只能下载与上传新建" >> /opt/vsftp/adminlog/"$adminroot""$timedate2" ;; 43) read -p "请输入您要修改权限的用户名: " xiugaiuser while [ ! "$xiugaiuser" ] || [ ! `more /etc/vsftpd/chroot_list | grep -w $xiugaiuser` ] do read -p "对不起,您输入的用户名$xiugaiuser不存在,请重新输入用户名,退出请按q键: " xiugaiuser if [ "$xiugaiuser" ] && [ $xiugaiuser == q ];then exit fi done sed -i "s/^cmds_allowed=RETR,ABOR,CWD,CDUP,LIST,MDTM,NLST,PASS,PASV,PORT,PWD,QUIT,SITE,SIZE,TYPE,USER$/#cmds_allowed=RETR,ABOR,CWD,CDUP,LIST,MDTM,NLS T,PASS,PASV,PORT,PWD,QUIT,SITE,SIZE,TYPE,USER/g" /etc/vsftpd/vconf/$xiugaiuser sed -i "s/^cmds_allowed=STOR,MKD,ABOR,CDUP,CWD,LIST,MDTM,NLST,PASS,PASV,PORT,PWD,QUIT,SITE,SIZE,TYPE,USER$/#cmds_allowed=STOR,MKD,ABOR,CDUP,CWD,LIST, MDTM,NLST,PASS,PASV,PORT,PWD,QUIT,SITE,SIZE,TYPE,USER/g" /etc/vsftpd/vconf/$xiugaiuser sed -i "s/^cmds_allowed=STOR,RETR,MKD,ABOR,CDUP,CWD,LIST,MDTM,NLST,PASS,PASV,PORT,PWD,QUIT,SITE,SIZE,TYPE,USER/#cmds_allowed=STOR,RETR,MKD,ABOR,CDUP, CWD,LIST,MDTM,NLST,PASS,PASV,PORT,PWD,QUIT,SITE,SIZE,TYPE,USER/g" /etc/vsftpd/vconf/$xiugaiuser read -p "您已成功修改$xiugaiuser权限为完全权限,按回车键继续" var echo "记录: 管理员$adminroot于$timedate1修改$xiugaiuser权限为完全权限" >> /opt/vsftp/adminlog/"$adminroot""$timedate2" ;; 44) read -p "请输入您要查询权限的用户名: " ftpuser while [ ! "$ftpuser" ] || [ ! `more /etc/vsftpd/chroot_list | grep -w $ftpuser` ] do read -p "对不起,您输入的用户名$ftpuser不存在,请重新输入用户名,退出请按q键: " ftpuser if [ "$ftpuser" ] && [ $ftpuser == q ];then exit fi done number1=`more /etc/vsftpd/vconf/$ftpuser | grep ^cmds_allowed=STOR,RETR,MKD,ABOR,CDUP,CWD,LIST,MDTM,NLST,PASS,PASV,PORT,PWD,QUIT,SITE,SIZE,TYPE,USER` number2=`more /etc/vsftpd/vconf/$ftpuser | grep ^cmds_allowed=RETR,ABOR,CWD,CDUP,LIST,MDTM,NLST,PASS,PASV,PORT,PWD,QUIT,SITE,SIZE,TYPE,USER` number3=`more /etc/vsftpd/vconf/$ftpuser | grep ^cmds_allowed=STOR,MKD,ABOR,CDUP,CWD,LIST,MDTM,NLST,PASS,PASV,PORT,PWD,QUIT,SITE,SIZE,TYPE,USER` number4=`more /etc/vsftpd/vconf/$ftpuser | grep ^write_enable=YES` if [ "$number1" ];then read -p "用户$ftpuser只能上传下载新建,按回车键继续操作" var elif [ "$number2" ];then read -p "用户$ftpuser只能下载,按回车键继续操作" var elif [ "$number3" ];then read -p "用户$ftpuser只能上传新建,按回车键继续操作" var elif [ "$number4" ];then read -p "用户$ftpuser具有完全权限,按回车键继续操作" var fi ;; 45) read -p "请输入您宿主用户名: " ftpuser while [ ! "$ftpuser" ] || [ ! `more /etc/vsftpd/chroot_list | grep -w $ftpuser` ] do read -p "对不起,您输入的宿主用户$ftpuser不存在,请重新输入,退出请按q键: " ftpuser if [ "$ftpuser" ] && [ $ftpuser == q ];then exit fi done read -p "请输入您的寄宿用户名: " ftpuser1 while [ ! "$ftpuser1" ] || [ ! `more /etc/vsftpd/chroot_list | grep -w $ftpuser1` ] do read -p "对不起,您输入寄宿用户$ftpuser不存在,请重新输入,退出请按q键: " ftpuser1 if [ "$ftpuser" ] && [ $ftpuser == q ];then exit fi done # touch /opt/vsftp/$ftpuser1/.$ftpuser1 # chattr +a /opt/vsftp/$ftpuser1/.$ftpuser1 mkdir -p /opt/vsftp/$ftpuser/$ftpuser1 mount --bind /opt/vsftp/$ftpuser1 /opt/vsftp/$ftpuser/$ftpuser1 chmod -R 777 /opt/vsftp/$ftpuser/$ftpuser1 echo "mount --bind /opt/vsftp/$ftpuser1 /opt/vsftp/$ftpuser/$ftpuser1" >> /etc/vsftpd/mountuser.sh read -p "您已经成功将用户$ftpuser1挂载到$ftpuser里,按回车键继续操作" var echo "记录: 管理员$adminroot于$timedate1挂载用户$ftpuser1到$ftpuser" >> /opt/vsftp/adminlog/"$adminroot""$timedate2" ;; 46) read -p "请选择的功能正在开发中,请回车键继续" var ;; *) read -p "请选择的功能正在开发中,请回车键继续" var ;;