您的位置:首页 > 运维架构 > Shell

CentOS 6.4 Linux vsftpd shell管理系统脚本完整版

2014-03-06 20:33 525 查看
本来打算将这个系统重新封装起来以后,再发布出来。但一直忙于工作上面的事情,没能及时处理。今天收到了丁丁历险的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/]//' /op
24000
t/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"%"}' </proc/stat
echo "系统最大内存:`free -m | grep Mem | awk '{print $2}'`"
echo "用户已经内存:`free -m | grep Mem | awk '{print $3}'`"
echo "剩余可用内存:`free -m | grep Mem | awk '{print $4}'`"
echo "系统最大虚拟内存:`free -m | grep Swap | awk '{print $2}'`"
echo "用户已经虚拟内存:`free -m | grep Swap | awk '{print $3}'`"
echo "剩余可用虚拟内存:`free -m | grep Swap | awk '{print $4}'`"
echo "记录: 管理员$adminroot于$timedate1查看了CPU与内存的使用情况" >> /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
;;
阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: