博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
test-definitions/blob/master/auto-test/ftp/ftp.sh
阅读量:4214 次
发布时间:2019-05-26

本文共 4142 字,大约阅读时间需要 13 分钟。

#! /bin/bashvsftpd_op(){    local cmd=""    local operation=$1    local log_file="vsftpd.log"#根据不同发行版起不同的service。以ubuntu为例,这里可能是service vsftpd start    case $distro in        "ubuntu" | "debian" )            cmd="service vsftpd $operation"            echo "$cmd" | tee ${log_file}            $cmd | tee ${log_file}            ;;        * )		#其他发行版用systemctl 来启动service            #cmd="${operation}_service vsftpd"            cmd="systemctl ${operation} vsftpd.service"            echo "$cmd" | tee ${log_file}           #eval \$$cmd | tee ${log_file}            ;;    esac}vsftpd_execute(){    local operation=$1	#调用函数vsftpd_op 控制ftp的service    vsftpd_op $operation	#等于零的话,测试失败?    if [ 0 -ne $? ]; then        echo "vsftpd $operation failed"        lava-test-case vsftpd-$operation --result fail    else        echo "vsftpd $operation pass"        lava-test-case vsftpd-$operation --result pass    fi}set -xcd ../../utils    . ./sys_info.shcd -#distro=`cat /etc/redhat-release | cut -b 1-6`#根据不同的发行版安装不同的包case $distro in    "ubuntu")        apt-get install vsftpd -y        apt-get install expect -y        print_info $? install-package        ;;    "centos")        yum install vsftpd -y        yum install vsftpd.aarch64 -y        yum install expect -y        yum install ftp -y        print_info $? install-package        ;;    "opensuse")        zypper install -y ftp        zypper install -y expect        ;;esac# test case -- start, stop, restart#分别测试start/restart/stop 这三个操作的ftpvsftpd_execute startvsftpd_execute restartvsftpd_execute stop#process=$(vsftpd_op status | grep "running")#if [ "$process"x != ""x  ]; then #   vsftpd_op stop#fiFTP_PUT_LOG=ftp_put_test.logFTP_GET_LOG=ftp_get_test.logif [ "$distro"x = "centos"x ] ;then	FTP_USERS=/etc/vsftpd/ftpusers	VSFTPD_CONF=/etc/vsftpd/vsftpd.confelse	FTP_USERS=/etc/ftpusers	VSFTPD_CONF=/etc/vsftpd.conffiif [ ! -e ${FTP_USERS}.origin ];then    cp ${FTP_USERS}{,.origin}else    cp ${FTP_USERS}{.origin,}fiif [ ! -e ${VSFTPD_CONF}.origin ];then    cp ${VSFTPD_CONF}{,.origin}else    cp ${VSFTPD_CONF}{.origin,}fi# prepare for the put and get test and the ftp home is ~/mkdir tmp && cd tmpecho 'For ftp put testing' > $FTP_PUT_LOGecho 'For ftp get testing' > ~/$FTP_GET_LOG#替换配置文件中的变量sed -i 's/root/#root/g' $FTP_USERSsed -i 's/listen=NO/listen=YES/g' $VSFTPD_CONFsed -i 's/listen_ipv6=YES/#listen_ipv6=YES/g' $VSFTPD_CONFsed -i 's/#write_enable=YES/write_enable=YES/g' $VSFTPD_CONFsed -i 's/write_enable=NO/write_enable=YES/g' $VSFTPD_CONFsed -i 's/userlist_enable=YES/userlist_enable=NO/g' $VSFTPD_CONFif [ "$distro" == "ubuntu" ] ; then    sed -i 's/pam_service_name=vsftpd/pam_service_name=ftp/g' $VSFTPD_CONFfi#配置完参数后重启tftp的服务vsftpd_op restart#睡眠5ssleep 5#测试ftp service的状态.vsftpd_op statussystemctl restart vsftpd.serviceservice restart vsftpd.service# for get and put testcd /root#SELinux安全访问策略限制会导致550 Failed to open file的错误所以这里打开setsebool -P allow_ftpd_full_access 1cd -EXPECT=$(which expect)#使用绝对路径执行expect$EXPECT << EOFset timeout 100spawn ftp localhostexpect "Name"send "\r"expect "Password"send "root\r"expect "ftp>"#passive表示被动,ftp的工作模式有主动和被动解决"227 Entering Passive MOde"send "passive\r"expect "ftp>"send "get ftp_get_test.log\r"expect {   "Transfer complete"   {       send "put ftp_put_test.log\r"       expect "Transfer complete"   }   "Failed to open file"   {       send "put ftp_put_test.log\r"       expect "Transfer complete"   }   "Connection refused"   {       send "put ftp_put_test.log\r"       expect "Transfer complete"   }}send "quit\r"expect eofEOF#看是否可以查找到FTP_GET_LOG 文件if [ $(find . -maxdepth 1 -name "$FTP_GET_LOG")x != ""x ]; then    lava-test-case vsftpd-download --result passelse    lava-test-case vsftpd-download --result failficd -#cd到用户的根目录cd ~if [ $(find . -maxdepth 1 -name "ftp_put_test.log")x != ""x ]; then    lava-test-case vsftpd-upload --result passelse    lava-test-case vsftpd-upload --result failfi#删除tmp 目录#删除安装包rm -rf tmpcase $distro in    "ubuntu")        apt-get remove vsftpd expect -y        print_info $? remove-package        ;;    "centos")        yum remove vsftpd expect -y        print_info $? remove-package        ;;esac

转载地址:http://mznmi.baihongyu.com/

你可能感兴趣的文章
C++中模版的使用
查看>>
TCP链接(三次握手)和释放(四次握手)
查看>>
面试中各类二叉树题型的整理
查看>>
快速排序
查看>>
插入算法
查看>>
希尔排序
查看>>
选择排序
查看>>
归并排序
查看>>
归并排序
查看>>
排序链表
查看>>
插入排序进行链表排序
查看>>
响应时间和周转时间区别
查看>>
spring 引入外部文件 配置数据源
查看>>
c++ 经典习题源码
查看>>
Hex Editor Neo 查看各种进制数
查看>>
android 实现倒计时功能
查看>>
android Button 的绑定,监听及其背景的改变
查看>>
android 开启闪关灯手电筒的实现
查看>>
android canvas 画布
查看>>
android 实现各activity之间的跳转
查看>>