使用shell编程实现LinuxFTP服务器的配置

#! /bin/bash

 installFTP(){
        echo "installing . . . "
        # 下载vsftpd 同时输出结果 “Complete”或“Nothing to do”
        yum -y install vsftpd | grep -E "Complete|Nothing to do"

}

versionFTP(){
        # 获取当前的版本号
        rpm -qa vsftpd

}

passwdFTP(){
        # 获得上传下载文件的路径
        cat /etc/passwd | grep "ftp" | cut -f2 -d " " | cut -f2 -d ":"

}

mkdirFTP(){
        # 创建文件 
        # 由于这里已经定义过输出 将stderr内容清除
        # 清除使用/dev/null 
        mkdir $1 2> /dev/null 

}

chmodFTP(){
        # 给文件赋予权限 777
        # 777权限=r:4 + w:2 + x:1
        # 对所有用户:可读可写可执行
        chmod 777 $1

}

find_in_file(){
        # 在文件$1 中查找内容$2
        # 用/dev/null 清除stdout的输出
        cat $1 | grep -c "<-- $2 -->"
        
}
 
matching_num(){
        # 返回文件$1与文本中内容$2匹配的行数
        cat $1 | grep -n "$2" | cut -f1 -d ":"

}


add_line_at_end(){
        # 如果查找不到当前行 就在文件内容最后输入当前行
        # 用/dev/null 清除stdout的输出
        find_in_file $1 $2 
        if [ "$?" -eq "0" ]; then
                 # 使用 “>>” 标准输出追加重定向方式
                 echo "$2" >> "$1"
        fi

}

del_line(){
        # 删除文件$1中能与内容$2匹配的行
        sed -i "/$2/d" $1

}

add_line(){
        # 在文件$1指定位置$3处添加内容$2
        sed -i "/$3/i $2\n" $1

}
 

echo "Do you want to install vsftp? [y/n]"
read ans

if [ "$ans"="y" ]; then
        installFTP $ans
       
        # 如果当前安装下载成功
        if [ "$?" -eq "0" ]; then 
                 echo "successful installed!"
                 version=$(versionFTP)
                 echo -n "current verion number:"
                 # 用cut切割字符串 得到当前vsftpd的版本号
                 # 版本号为以“-”为分隔符的第二个子串
                 echo "$version" | cut -f2 -d "-" 

        fi      
else
        echo "Skip the download step!"

fi

 

echo "Do you want to make a new documents? [y/n]"
read ans

 
if [ "$ans" = "y" ]; then
        # 查询当前的FTP路径
        pwdFTP=$(passwdFTP)

        echo "ftp passed: $pwdFTP"
 

        # 输入上传与下载的文件名的名称 
        echo -n "Enter trhe upload/download file name: "
        read filename

        # 拼接字符串
        filedir="$pwdFTP/$filename"

        # echo "$filedir"

        # 创建文件夹
        mkdirFTP $filedir
        # 进行测试 
        if [ "$?" -eq "0" ]; then 
                 echo "File successful set up!"
        else 
                 echo "File exists!"
        fi

        # 赋予权限
        chmodFTP $filedir
        # 进行测试 
        if [ "$?" -eq "0" ]; then 
                 echo "Grand permission successfully!"
        else 
                 echo "Failed to grant permission!"
        fi

fi

 

echo "Do you want anonymous users to upload&download? [y/n]"
read ans



if [ "$ans" = "y" ]; then 
        # 已知vsftpd配置文件的完整路径
        confpath="/etc/vsftpd/vsftpd.conf"

        echo "The current path of the configure file is: $confpath"


        # 对当前文件进行处理 
        echo "Modifying. . . "
        # 获取当前应该写入的行数num
        num=$(matching_num $confpath $annocontents)
        # 用let命令将num自减
        # 使用算术计算表达式
        let num=$[num-1]
 
        # 先删除注释行 
        del_line $confpath $annocontents 

        # 在文件指定处批量添加内容
        for i in ${addcontents[*]}
        do 
                 res=$(find_in_file $confpath "$i")
                 # 测试函数返回结果
                 if [ "$res" -eq "0" ]; then
                         add_line $confpath $i $num
                         echo "$i modified."
                 else 
                         echo "$i exists!"
                 fi
        done 

fi

使用方式看这里!!!!

step1
在这里插入图片描述

step2
在这里插入图片描述

step3
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值