update testcase for testsuite ftp

This commit is contained in:
2026-04-25 05:52:10 +08:00
parent d0e9e7200f
commit 69b751bf7a
44 changed files with 0 additions and 4133 deletions

View File

@@ -14,190 +14,18 @@
"name": "test_ftp_function_create_dir",
"desc": "Test creating a directory on FTP server"
},
{
"name": "test_ftp_ftp__v",
"desc": "测试ftp命令的-v参数用于显示详细信息"
},
{
"name": "test_ftp_ftp__n",
"desc": "测试ftp命令的-n参数用于禁止自动登录"
},
{
"name": "test_ftp_ftp__i",
"desc": "测试ftp命令的-i参数用于关闭交互式提示"
},
{
"name": "test_ftp_ftp__d",
"desc": "测试ftp命令的-d参数用于启用调试信息"
},
{
"name": "test_ftp_ftp__g",
"desc": "测试ftp命令的-g参数用于禁用文件名通配符"
},
{
"name": "test_ftp_ftp__s_filename",
"desc": "测试ftp命令的-s参数并指定文件名用于从文件读取命令"
},
{
"name": "test_ftp_ftp__a",
"desc": "测试ftp命令的-a参数用于在绑定时使用任何本地接口"
},
{
"name": "test_ftp_ftp__upper_a",
"desc": "测试ftp命令的-A参数用于强制使用主动模式"
},
{
"name": "test_ftp_ftp__p",
"desc": "测试ftp命令的-p参数用于强制使用被动模式"
},
{
"name": "test_ftp_ftp__r",
"desc": "测试ftp命令的-r参数用于设置重试次数"
},
{
"name": "test_ftp_ftp__upper_v",
"desc": "测试ftp命令的-V参数用于显示版本信息"
},
{
"name": "test_ftp_ftp__h",
"desc": "测试ftp命令的-h参数用于显示帮助信息"
},
{
"name": "test_ftp_pftp_upper_v",
"desc": "测试pftp命令的-V参数用于显示版本信息"
},
{
"name": "test_ftp_pftp_v",
"desc": "测试pftp命令的-v参数用于显示详细输出"
},
{
"name": "test_ftp_pftp_upper_n",
"desc": "测试pftp命令的-N参数用于指定网络地址"
},
{
"name": "test_ftp_pftp_upper_p",
"desc": "测试pftp命令的-P参数用于指定端口号"
},
{
"name": "test_ftp_pftp_upper_r",
"desc": "测试pftp命令的-R参数用于指定重试次数"
},
{
"name": "test_ftp_pftp_upper_t",
"desc": "测试pftp命令的-T参数用于设置超时时间"
},
{
"name": "test_ftp_pftp_upper_i",
"desc": "测试pftp命令的-I参数用于指定输入文件"
},
{
"name": "test_ftp_pftp_upper_o",
"desc": "测试pftp命令的-O参数用于指定输出文件"
},
{
"name": "test_ftp_pftp_upper_s",
"desc": "测试pftp命令的-S参数用于指定源地址"
},
{
"name": "test_ftp_pftp_upper_a",
"desc": "测试pftp命令的-A参数用于启用主动模式"
},
{
"name": "test_ftp_pftp_upper_e",
"desc": "测试pftp命令的-E参数用于启用EPSV模式"
},
{
"name": "test_ftp_pftp_upper_l",
"desc": "测试pftp命令的-L参数用于限制数据速率"
},
{
"name": "test_ftp_pftp_upper_u",
"desc": "测试pftp命令的-U参数用于设置用户"
},
{
"name": "test_ftp_pftp_upper_w",
"desc": "测试pftp命令的-W参数用于设置密码"
},
{
"name": "test_ftp_pftp_upper_d",
"desc": "测试pftp命令的-D参数用于启用调试模式"
},
{
"name": "test_ftp_pftp_upper_c",
"desc": "测试pftp命令的-C参数用于启用压缩模式"
},
{
"name": "test_ftp_pftp_upper_k",
"desc": "测试pftp命令的-K参数用于设置keepalive间隔"
},
{
"name": "test_ftp_pftp_upper_m",
"desc": "测试pftp命令的-M参数用于设置MDTM时间戳"
},
{
"name": "test_ftp_pftp_upper_f",
"desc": "测试pftp命令的-F参数用于设置FTP命令"
},
{
"name": "test_ftp_pftp_upper_g",
"desc": "测试pftp命令的-G参数用于禁用通配符扩展"
},
{
"name": "test_ftp_pftp_upper_h",
"desc": "测试pftp命令的-H参数用于指定主机"
},
{
"name": "test_ftp_pftp_upper_j",
"desc": "测试pftp命令的-J参数用于指定代理"
},
{
"name": "test_ftp_pftp_upper_x",
"desc": "测试pftp命令的-X参数用于指定代理用户"
},
{
"name": "test_ftp_pftp_upper_y",
"desc": "测试pftp命令的-Y参数用于指定代理密码"
},
{
"name": "test_ftp_pftp_upper_z",
"desc": "测试pftp命令的-Z参数用于指定代理类型"
},
{
"name": "test_ftp_pftp_upper_q",
"desc": "测试pftp命令的-Q参数用于设置配额"
},
{
"name": "test_ftp_pftp_upper_b",
"desc": "测试pftp命令的-B参数用于设置缓冲区大小"
},
{
"name": "test_ftp_function_install_check",
"desc": "Check if FTP package is installed"
},
{
"name": "test_ftp_function_basic_connect",
"desc": "Test basic FTP server connection"
},
{
"name": "test_ftp_function_list_dir",
"desc": "Test listing directory contents via FTP"
},
{
"name": "test_ftp_function_upload_file",
"desc": "Test uploading a file via FTP"
},
{
"name": "test_ftp_function_download_file",
"desc": "Test downloading a file via FTP"
},
{
"name": "test_ftp_function_delete_file",
"desc": "Test deleting a file on FTP server"
},
{
"name": "test_ftp_function_passive_mode",
"desc": "Test FTP connection in passive mode"
},
{
"name": "test_ftp_function_help_output",
"desc": "Test FTP command help information"

View File

@@ -1,92 +0,0 @@
#!/usr/bin/bash
# Copyright (c) 2024 ISCAS .ALL rights reserved.
# This program is licensed under Mulan PSL v2.
# You can use it according to the terms and conditions of the Mulan PSL v2.
# http://license.coscl.org.cn/MulanPSL2
# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# #############################################
# @Author : honghua
# @Contact : honghua@iscas.ac.cn
# @Date : 2026-04-03
# @License : Mulan PSL v2
# @Desc : 测试ftp命令的-a参数用于在绑定时使用任何本地接口
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 测试ftp命令的-a参数功能
LOG_INFO "开始测试ftp命令的-a参数功能"
# 定义软件包名称
PACKAGE_NAME="ftp"
# 检查是否已安装ftp软件包
LOG_INFO "检查ftp软件包是否已安装"
rpm -q $PACKAGE_NAME
if [ $? -eq 0 ]; then
LOG_INFO "ftp软件包已安装测试结束后保持安装状态"
INSTALLED=true
else
LOG_INFO "ftp软件包未安装将在测试过程中安装"
INSTALLED=false
fi
# 检查yum源中是否有ftp软件包
LOG_INFO "检查yum源中是否有ftp软件包"
dnf list available $PACKAGE_NAME 2>/dev/null | grep -q $PACKAGE_NAME
CHECK_RESULT $? 0 0 "yum源中没有找到ftp软件包"
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中没有ftp软件包"
exit 255
fi
# 如果未安装则安装ftp软件包
if [ "$INSTALLED" = false ]; then
LOG_INFO "安装ftp软件包"
dnf install -y $PACKAGE_NAME
CHECK_RESULT $? 0 0 "安装ftp软件包失败"
fi
# 检查ftp命令是否存在
LOG_INFO "检查ftp命令是否存在"
which ftp
CHECK_RESULT $? 0 0 "ftp命令不存在"
# 检查ftp命令是否支持-a参数
LOG_INFO "检查ftp命令是否支持-a参数"
ftp --help 2>&1 | grep -q "\-a"
CHECK_RESULT $? 0 0 "ftp命令不支持-a参数"
if [ $? -ne 0 ]; then
LOG_ERROR "ftp命令不支持-a参数"
exit 255
fi
# 测试ftp命令的-a参数功能
LOG_INFO "测试ftp命令的-a参数功能"
ftp -a localhost <<EOF
quit
EOF
# 检查ftp命令执行结果
CHECK_RESULT $? 0 0 "ftp命令执行失败"
# 清理测试环境
LOG_INFO "清理测试环境"
if [ "$INSTALLED" = false ]; then
LOG_INFO "卸载ftp软件包"
dnf remove -y $PACKAGE_NAME
CHECK_RESULT $? 0 0 "卸载ftp软件包失败"
else
LOG_INFO "保持ftp软件包安装状态"
fi
LOG_INFO "ftp命令-a参数测试完成"
}
main "$@"

View File

@@ -1,75 +0,0 @@
#!/usr/bin/bash
# Copyright (c) 2024 ISCAS .ALL rights reserved.
# This program is licensed under Mulan PSL v2.
# You can use it according to the terms and conditions of the Mulan PSL v2.
# http://license.coscl.org.cn/MulanPSL2
# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# #############################################
# @Author : honghua
# @Contact : honghua@iscas.ac.cn
# @Date : 2026-04-03
# @License : Mulan PSL v2
# @Desc : 测试ftp命令的-g参数用于禁用文件名通配符
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试ftp命令的-g参数用于禁用文件名通配符"
LOG_INFO "检查ftp命令是否已安装"
if command -v ftp &> /dev/null; then
LOG_INFO "ftp命令已安装脚本结束后将保持安装状态"
INSTALLED=true
else
LOG_INFO "ftp命令未安装将进行安装"
INSTALLED=false
fi
if [ "$INSTALLED" = false ]; then
LOG_INFO "检查yum源中是否有ftp软件包"
if ! dnf list available ftp &> /dev/null; then
LOG_ERROR "yum源中没有ftp软件包"
exit 255
fi
LOG_INFO "安装ftp软件包"
dnf install -y ftp
CHECK_RESULT $? 0 0 "安装ftp软件包失败"
fi
LOG_INFO "检查ftp命令是否支持-g参数"
ftp -h 2>&1 | grep -q "\-g"
if [ $? -ne 0 ]; then
LOG_ERROR "ftp命令不支持-g参数"
if [ "$INSTALLED" = false ]; then
LOG_INFO "卸载ftp软件包"
dnf remove -y ftp
fi
exit 255
fi
LOG_INFO "测试ftp命令的-g参数"
ftp -g example.com <<EOF
quit
EOF
CHECK_RESULT $? 0 0 "ftp命令执行失败"
LOG_INFO "测试完成,开始清理环境"
if [ "$INSTALLED" = false ]; then
LOG_INFO "卸载ftp软件包"
dnf remove -y ftp
CHECK_RESULT $? 0 0 "卸载ftp软件包失败"
else
LOG_INFO "保持ftp软件包安装状态"
fi
LOG_INFO "环境恢复完成"
}
main "$@"

View File

@@ -1,65 +0,0 @@
#!/usr/bin/bash
# Copyright (c) 2024 ISCAS .ALL rights reserved.
# This program is licensed under Mulan PSL v2.
# You can use it according to the terms and conditions of the Mulan PSL v2.
# http://license.coscl.org.cn/MulanPSL2
# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# #############################################
# @Author : honghua
# @Contact : honghua@iscas.ac.cn
# @Date : 2026-04-03
# @License : Mulan PSL v2
# @Desc : 测试ftp命令的-h参数用于显示帮助信息
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试ftp命令的-h参数用于显示帮助信息"
# 检查是否已安装ftp客户端
LOG_INFO "检查ftp客户端是否已安装"
if rpm -q ftp &>/dev/null; then
LOG_INFO "ftp客户端已安装测试结束后将保持安装状态"
INSTALLED=true
else
LOG_INFO "ftp客户端未安装将在测试前安装"
INSTALLED=false
fi
# 如果未安装,则尝试安装
if [ "$INSTALLED" = false ]; then
LOG_INFO "检查yum源中是否有ftp软件包"
if ! dnf list available ftp &>/dev/null; then
LOG_ERROR "yum源中没有ftp软件包"
exit 255
fi
LOG_INFO "安装ftp客户端"
dnf install -y ftp
CHECK_RESULT $? 0 0 "安装ftp客户端失败"
fi
# 测试-h参数
LOG_INFO "测试ftp命令的-h参数"
ftp -h 2>&1 | grep -q "usage"
CHECK_RESULT $? 0 0 "ftp -h命令执行失败或未显示帮助信息"
# 清理环境:如果测试前未安装,则卸载软件包
if [ "$INSTALLED" = false ]; then
LOG_INFO "卸载ftp客户端"
dnf remove -y ftp
CHECK_RESULT $? 0 0 "卸载ftp客户端失败"
else
LOG_INFO "保持ftp客户端安装状态"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -1,77 +0,0 @@
#!/usr/bin/bash
# Copyright (c) 2024 ISCAS .ALL rights reserved.
# This program is licensed under Mulan PSL v2.
# You can use it according to the terms and conditions of the Mulan PSL v2.
# http://license.coscl.org.cn/MulanPSL2
# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# #############################################
# @Author : honghua
# @Contact : honghua@iscas.ac.cn
# @Date : 2026-04-03
# @License : Mulan PSL v2
# @Desc : 测试ftp命令的-i参数用于关闭交互式提示
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试ftp命令的-i参数功能"
LOG_INFO "步骤1检查ftp软件包是否已在yum源中"
dnf list available ftp 2>/dev/null | grep -q "^ftp\."
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中未找到ftp软件包"
exit 255
fi
LOG_INFO "yum源中存在ftp软件包"
LOG_INFO "步骤2检查系统是否已安装ftp客户端"
rpm -q ftp > /dev/null 2>&1
if [ $? -eq 0 ]; then
LOG_INFO "ftp客户端已安装测试完成后将保持安装状态"
INSTALLED=1
else
LOG_INFO "ftp客户端未安装将作为测试步骤安装"
INSTALLED=0
fi
if [ $INSTALLED -eq 0 ]; then
LOG_INFO "步骤3安装ftp客户端"
dnf install -y ftp
CHECK_RESULT $? 0 0 "安装ftp客户端失败"
LOG_INFO "ftp客户端安装成功"
fi
LOG_INFO "步骤4检查ftp命令是否支持-i参数"
ftp -i --help 2>&1 | grep -q "\-i"
if [ $? -ne 0 ]; then
LOG_ERROR "ftp命令不支持-i参数"
exit 255
fi
LOG_INFO "ftp命令支持-i参数"
LOG_INFO "步骤5验证ftp -i命令基本执行不实际连接服务器"
ftp -i -n 2>&1 | head -5
CHECK_RESULT $? 0 0 "ftp -i命令执行失败"
LOG_INFO "步骤6验证-i参数关闭交互式提示的效果模拟操作"
echo "测试-i参数功能" | timeout 2 ftp -i 2>&1 | grep -q "Interactive mode off"
CHECK_RESULT $? 0 0 "-i参数未能关闭交互式提示"
if [ $INSTALLED -eq 0 ]; then
LOG_INFO "步骤7清理环境卸载测试安装的ftp客户端"
dnf remove -y ftp
CHECK_RESULT $? 0 0 "卸载ftp客户端失败"
LOG_INFO "ftp客户端卸载成功"
else
LOG_INFO "步骤7环境已安装ftp客户端保持安装状态无需卸载"
fi
LOG_INFO "ftp命令的-i参数测试完成"
}
main "$@"

View File

@@ -1,75 +0,0 @@
#!/usr/bin/bash
# Copyright (c) 2024 ISCAS .ALL rights reserved.
# This program is licensed under Mulan PSL v2.
# You can use it according to the terms and conditions of the Mulan PSL v2.
# http://license.coscl.org.cn/MulanPSL2
# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# #############################################
# @Author : honghua
# @Contact : honghua@iscas.ac.cn
# @Date : 2026-04-03
# @License : Mulan PSL v2
# @Desc : 测试ftp命令的-n参数用于禁止自动登录
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 检查是否已安装ftp客户端
LOG_INFO "检查是否已安装ftp客户端"
if ! dnf list installed ftp &>/dev/null; then
LOG_INFO "ftp客户端未安装将在测试过程中安装"
INSTALLED_FTP=0
else
LOG_INFO "ftp客户端已安装"
INSTALLED_FTP=1
fi
# 检查yum源中是否有ftp软件包
LOG_INFO "检查yum源中是否有ftp软件包"
if ! dnf list available ftp &>/dev/null; then
LOG_ERROR "yum源中没有ftp软件包"
exit 255
fi
# 如果未安装则安装ftp客户端
if [ ${INSTALLED_FTP} -eq 0 ]; then
LOG_INFO "安装ftp客户端"
dnf install -y ftp
CHECK_RESULT $? 0 0 "安装ftp客户端失败"
fi
# 测试ftp命令的-n参数
LOG_INFO "测试ftp命令的-n参数"
LOG_INFO "执行ftp -n命令验证禁止自动登录功能"
ftp -n
CHECK_RESULT $? 0 0 "ftp -n命令执行失败"
# 验证-n参数是否存在
LOG_INFO "验证-n参数是否存在"
ftp --help 2>&1 | grep -q "\-n"
CHECK_RESULT $? 0 0 "ftp命令不支持-n参数"
# 测试ftp -n命令的基本功能
LOG_INFO "测试ftp -n命令的基本功能"
LOG_INFO "尝试连接不存在的服务器,验证-n参数不会自动登录"
timeout 5 ftp -n invalid.server.local 2>&1 | grep -q "Not connected"
CHECK_RESULT $? 0 0 "ftp -n命令未正确禁止自动登录"
# 清理环境
LOG_INFO "清理环境"
if [ ${INSTALLED_FTP} -eq 0 ]; then
LOG_INFO "卸载测试过程中安装的ftp客户端"
dnf remove -y ftp
CHECK_RESULT $? 0 0 "卸载ftp客户端失败"
fi
LOG_INFO "测试完成,环境已恢复"
}
main "$@"

View File

@@ -1,83 +0,0 @@
#!/usr/bin/bash
# Copyright (c) 2024 ISCAS .ALL rights reserved.
# This program is licensed under Mulan PSL v2.
# You can use it according to the terms and conditions of the Mulan PSL v2.
# http://license.coscl.org.cn/MulanPSL2
# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# #############################################
# @Author : honghua
# @Contact : honghua@iscas.ac.cn
# @Date : 2026-04-03
# @License : Mulan PSL v2
# @Desc : 测试ftp命令的-p参数用于强制使用被动模式
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试ftp命令的-p参数被动模式"
# 定义软件包名称
PACKAGE="ftp"
# 步骤1检查环境是否已安装ftp软件包
LOG_INFO "检查是否已安装ftp软件包"
if command -v ftp &> /dev/null; then
LOG_INFO "ftp已安装测试后将保持安装状态"
INSTALLED=true
else
LOG_INFO "ftp未安装将在测试前安装"
INSTALLED=false
fi
# 步骤2检查yum源中是否有ftp软件包
LOG_INFO "检查yum源中是否存在ftp软件包"
if ! dnf list available "$PACKAGE" &> /dev/null; then
LOG_ERROR "yum源中未找到ftp软件包"
exit 255
fi
# 步骤3如果未安装则安装ftp软件包
if [ "$INSTALLED" = false ]; then
LOG_INFO "安装ftp软件包"
dnf install -y "$PACKAGE"
CHECK_RESULT $? 0 0 "安装ftp软件包失败"
fi
# 步骤4检查ftp命令是否支持-p参数
LOG_INFO "检查ftp命令是否支持-p参数"
ftp -h 2>&1 | grep -q "\-p"
CHECK_RESULT $? 0 0 "ftp命令不支持-p参数"
if [ $? -ne 0 ]; then
LOG_ERROR "ftp命令不支持-p参数"
exit 255
fi
# 步骤5测试ftp命令的-p参数
LOG_INFO "测试ftp命令的-p参数被动模式"
# 这里使用一个不存在的服务器地址进行测试,仅检查参数解析是否成功
ftp -p -n 127.0.0.1 21 <<EOF
quit
EOF
# 检查ftp命令是否成功解析参数即使连接失败参数解析成功也会返回0
CHECK_RESULT $? 0 0 "ftp命令-p参数测试失败"
# 步骤6清理环境
LOG_INFO "清理测试环境"
if [ "$INSTALLED" = false ]; then
LOG_INFO "卸载ftp软件包"
dnf remove -y "$PACKAGE"
CHECK_RESULT $? 0 0 "卸载ftp软件包失败"
else
LOG_INFO "保持ftp软件包安装状态"
fi
LOG_INFO "ftp命令-p参数测试完成"
}
main "$@"

View File

@@ -1,78 +0,0 @@
#!/usr/bin/bash
# Copyright (c) 2024 ISCAS .ALL rights reserved.
# This program is licensed under Mulan PSL v2.
# You can use it according to the terms and conditions of the Mulan PSL v2.
# http://license.coscl.org.cn/MulanPSL2
# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# #############################################
# @Author : honghua
# @Contact : honghua@iscas.ac.cn
# @Date : 2026-04-03
# @License : Mulan PSL v2
# @Desc : 测试ftp命令的-r参数用于设置重试次数
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 检查是否已安装ftp客户端
LOG_INFO "检查是否已安装ftp客户端"
if ! rpm -q ftp >/dev/null 2>&1; then
LOG_INFO "ftp客户端未安装将在测试过程中安装"
INSTALLED_FTP=0
else
LOG_INFO "ftp客户端已安装"
INSTALLED_FTP=1
fi
# 检查yum源中是否有ftp软件包
LOG_INFO "检查yum源中是否有ftp软件包"
if ! dnf list available ftp >/dev/null 2>&1; then
LOG_ERROR "yum源中未找到ftp软件包"
exit 255
fi
# 如果未安装ftp则进行安装
if [ ${INSTALLED_FTP} -eq 0 ]; then
LOG_INFO "安装ftp客户端"
dnf install -y ftp
CHECK_RESULT $? 0 0 "安装ftp客户端失败"
fi
# 测试ftp命令的-r参数
LOG_INFO "测试ftp命令的-r参数设置重试次数为3"
ftp -r 3 localhost <<EOF
quit
EOF
CHECK_RESULT $? 0 0 "ftp命令的-r参数测试失败"
# 测试ftp命令的-r参数无效值
LOG_INFO "测试ftp命令的-r参数无效值非数字"
ftp -r abc localhost 2>&1 | grep -q "invalid"
CHECK_RESULT $? 0 0 "ftp命令的-r参数无效值处理不符合预期"
# 测试ftp命令的-r参数不支持的情况
LOG_INFO "测试ftp命令的-r参数不支持的情况"
if ftp -r 3 -x localhost 2>&1 | grep -q "invalid option\|unrecognized option"; then
LOG_INFO "ftp命令不支持-x参数符合预期"
else
LOG_ERROR "ftp命令参数检查失败"
exit 255
fi
# 清理环境如果测试前未安装ftp则卸载
if [ ${INSTALLED_FTP} -eq 0 ]; then
LOG_INFO "卸载ftp客户端"
dnf remove -y ftp
CHECK_RESULT $? 0 0 "卸载ftp客户端失败"
fi
LOG_INFO "ftp命令-r参数测试完成"
}
main "$@"

View File

@@ -1,109 +0,0 @@
#!/usr/bin/bash
# Copyright (c) 2024 ISCAS .ALL rights reserved.
# This program is licensed under Mulan PSL v2.
# You can use it according to the terms and conditions of the Mulan PSL v2.
# http://license.coscl.org.cn/MulanPSL2
# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# #############################################
# @Author : honghua
# @Contact : honghua@iscas.ac.cn
# @Date : 2026-04-03
# @License : Mulan PSL v2
# @Desc : 测试ftp命令的-s参数并指定文件名用于从文件读取命令
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 定义颜色输出
LOG_INFO() {
echo -e "\033[32m[INFO]\033[0m $1"
}
LOG_ERROR() {
echo -e "\033[31m[ERROR]\033[0m $1"
}
# 定义软件包名称和命令
PACKAGE_NAME="ftp"
COMMAND="ftp"
PARAM="-s"
TEST_FILE="/tmp/ftp_commands.txt"
TEST_SERVER="localhost"
TEST_PORT="21"
# 步骤1检查yum源中是否存在ftp软件包
LOG_INFO "步骤1检查yum源中是否存在ftp软件包"
dnf list available ${PACKAGE_NAME} &>/dev/null
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中不存在${PACKAGE_NAME}软件包"
exit 255
fi
# 步骤2检查系统是否已安装ftp
LOG_INFO "步骤2检查系统是否已安装ftp"
if command -v ${COMMAND} &>/dev/null; then
LOG_INFO "ftp已安装脚本结束后保持安装状态"
ALREADY_INSTALLED=1
else
LOG_INFO "ftp未安装将在测试过程中安装"
ALREADY_INSTALLED=0
fi
# 步骤3安装ftp软件包如果未安装
if [ ${ALREADY_INSTALLED} -eq 0 ]; then
LOG_INFO "步骤3安装ftp软件包"
dnf install -y ${PACKAGE_NAME}
CHECK_RESULT $? 0 0 "安装ftp软件包失败"
fi
# 步骤4检查ftp命令是否支持-s参数
LOG_INFO "步骤4检查ftp命令是否支持-s参数"
${COMMAND} --help 2>&1 | grep -q "${PARAM}"
if [ $? -ne 0 ]; then
LOG_ERROR "ftp命令不支持${PARAM}参数"
# 如果之前未安装,则卸载软件包
if [ ${ALREADY_INSTALLED} -eq 0 ]; then
dnf remove -y ${PACKAGE_NAME}
fi
exit 255
fi
# 步骤5创建测试文件
LOG_INFO "步骤5创建测试文件"
cat > ${TEST_FILE} << EOF
open ${TEST_SERVER} ${TEST_PORT}
user anonymous anonymous
quit
EOF
CHECK_RESULT $? 0 0 "创建测试文件失败"
# 步骤6测试ftp命令的-s参数
LOG_INFO "步骤6测试ftp命令的-s参数"
${COMMAND} ${PARAM} ${TEST_FILE} ${TEST_SERVER} &>/dev/null
CHECK_RESULT $? 0 0 "ftp命令执行失败"
# 步骤7清理测试文件
LOG_INFO "步骤7清理测试文件"
rm -f ${TEST_FILE}
CHECK_RESULT $? 0 0 "删除测试文件失败"
# 步骤8恢复环境
LOG_INFO "步骤8恢复环境"
if [ ${ALREADY_INSTALLED} -eq 0 ]; then
LOG_INFO "卸载ftp软件包"
dnf remove -y ${PACKAGE_NAME}
CHECK_RESULT $? 0 0 "卸载ftp软件包失败"
else
LOG_INFO "保持ftp软件包安装状态"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -1,72 +0,0 @@
#!/usr/bin/bash
# Copyright (c) 2024 ISCAS .ALL rights reserved.
# This program is licensed under Mulan PSL v2.
# You can use it according to the terms and conditions of the Mulan PSL v2.
# http://license.coscl.org.cn/MulanPSL2
# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# #############################################
# @Author : honghua
# @Contact : honghua@iscas.ac.cn
# @Date : 2026-04-03
# @License : Mulan PSL v2
# @Desc : 测试ftp命令的-A参数用于强制使用主动模式
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试ftp命令的-A参数强制使用主动模式"
LOG_INFO "1. 检查是否已安装ftp客户端"
if command -v ftp &> /dev/null; then
LOG_INFO "ftp客户端已安装测试结束后将保持安装状态"
INSTALLED=true
else
LOG_INFO "ftp客户端未安装将在测试过程中安装"
INSTALLED=false
fi
LOG_INFO "2. 检查yum源中是否有ftp软件包"
if ! dnf list available ftp &> /dev/null; then
LOG_ERROR "yum源中未找到ftp软件包"
exit 255
fi
if [ "$INSTALLED" = false ]; then
LOG_INFO "3. 安装ftp客户端"
dnf install -y ftp
CHECK_RESULT $? 0 0 "安装ftp客户端失败"
fi
LOG_INFO "4. 检查ftp命令是否支持-A参数"
ftp -A 2>&1 | grep -q "unknown option"
if [ $? -eq 0 ]; then
LOG_ERROR "ftp命令不支持-A参数"
exit 255
fi
LOG_INFO "5. 测试ftp命令的-A参数"
LOG_INFO "尝试使用主动模式连接FTP服务器假设服务器为localhost"
ftp -A localhost <<EOF
quit
EOF
CHECK_RESULT $? 0 0 "使用-A参数连接FTP服务器失败"
LOG_INFO "6. 清理环境"
if [ "$INSTALLED" = false ]; then
LOG_INFO "卸载ftp客户端"
dnf remove -y ftp
CHECK_RESULT $? 0 0 "卸载ftp客户端失败"
else
LOG_INFO "保持ftp客户端安装状态"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -1,65 +0,0 @@
#!/usr/bin/bash
# Copyright (c) 2024 ISCAS .ALL rights reserved.
# This program is licensed under Mulan PSL v2.
# You can use it according to the terms and conditions of the Mulan PSL v2.
# http://license.coscl.org.cn/MulanPSL2
# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# #############################################
# @Author : honghua
# @Contact : honghua@iscas.ac.cn
# @Date : 2026-04-03
# @License : Mulan PSL v2
# @Desc : 测试ftp命令的-V参数用于显示版本信息
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 检查是否已安装ftp客户端
LOG_INFO "检查是否已安装ftp客户端"
if ! dnf list installed ftp &>/dev/null; then
LOG_INFO "ftp客户端未安装将在测试过程中安装"
INSTALLED_DURING_TEST=1
else
LOG_INFO "ftp客户端已安装"
INSTALLED_DURING_TEST=0
fi
# 检查yum源中是否有ftp软件包
LOG_INFO "检查yum源中是否有ftp软件包"
if ! dnf list available ftp &>/dev/null; then
LOG_ERROR "yum源中未找到ftp软件包"
exit 255
fi
# 如果未安装则安装ftp客户端
if [ ${INSTALLED_DURING_TEST} -eq 1 ]; then
LOG_INFO "安装ftp客户端"
dnf install -y ftp
CHECK_RESULT $? 0 0 "安装ftp客户端失败"
fi
# 测试ftp命令的-V参数
LOG_INFO "测试ftp命令的-V参数用于显示版本信息"
ftp -V
CHECK_RESULT $? 0 0 "ftp -V命令执行失败"
# 清理环境
LOG_INFO "清理环境"
if [ ${INSTALLED_DURING_TEST} -eq 1 ]; then
LOG_INFO "卸载测试期间安装的ftp客户端"
dnf remove -y ftp
CHECK_RESULT $? 0 0 "卸载ftp客户端失败"
else
LOG_INFO "保持原有安装状态不卸载ftp客户端"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -1,61 +0,0 @@
#!/usr/bin/bash
# Copyright (c) 2024 ISCAS .ALL rights reserved.
# This program is licensed under Mulan PSL v2.
# You can use it according to the terms and conditions of the Mulan PSL v2.
# http://license.coscl.org.cn/MulanPSL2
# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# #############################################
# @Author : honghua
# @Contact : honghua@iscas.ac.cn
# @Date : 2026-04-03
# @License : Mulan PSL v2
# @Desc : 测试ftp命令的-v参数用于显示详细信息
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试ftp命令的-v参数用于显示详细信息"
LOG_INFO "检查环境是否已安装ftp软件包"
if dnf list installed ftp &> /dev/null; then
LOG_INFO "ftp软件包已安装测试结束后将保持安装状态"
INSTALLED=true
else
LOG_INFO "ftp软件包未安装将在测试前安装并在测试后卸载"
INSTALLED=false
fi
if [ "$INSTALLED" = false ]; then
LOG_INFO "检查yum源中是否存在ftp软件包"
if ! dnf list available ftp &> /dev/null; then
LOG_ERROR "yum源中未找到ftp软件包"
exit 255
fi
LOG_INFO "安装ftp软件包"
dnf install -y ftp
CHECK_RESULT $? 0 0 "安装ftp软件包失败"
fi
LOG_INFO "检查ftp命令是否支持-v参数"
ftp -v &> /dev/null
if [ $? -eq 255 ]; then
LOG_ERROR "ftp命令不支持-v参数或参数不存在"
exit 255
fi
LOG_INFO "执行ftp -v命令测试"
ftp -v
CHECK_RESULT $? 0 0 "ftp -v命令执行失败"
if [ "$INSTALLED" = false ]; then
LOG_INFO "测试完成卸载ftp软件包"
dnf remove -y ftp
CHECK_RESULT $? 0 0 "卸载ftp软件包失败"
else
LOG_INFO "测试完成保持ftp软件包安装状态"
fi
LOG_INFO "测试结束,环境已恢复"
}
main "$@"

View File

@@ -1,84 +0,0 @@
#!/usr/bin/bash
# Copyright (c) 2024 ISCAS .ALL rights reserved.
# This program is licensed under Mulan PSL v2.
# You can use it according to the terms and conditions of the Mulan PSL v2.
# http://license.coscl.org.cn/MulanPSL2
# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# #############################################
# @Author : honghua
# @Contact : honghua@iscas.ac.cn
# @Date : 2026-04-03
# @License : Mulan PSL v2
# @Desc : Test basic FTP server connection
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试Test basic FTP server connection"
# 检查是否已安装vsftpd
LOG_INFO "检查vsftpd是否已安装"
if dnf list installed vsftpd &>/dev/null; then
LOG_INFO "vsftpd已安装标记为需要保持安装状态"
INSTALLED_BEFORE_TEST=true
else
LOG_INFO "vsftpd未安装将在测试中安装"
INSTALLED_BEFORE_TEST=false
fi
# 检查yum源中是否有vsftpd软件包
LOG_INFO "检查yum源中是否有vsftpd软件包"
if ! dnf list available vsftpd &>/dev/null; then
LOG_ERROR "yum源中未找到vsftpd软件包"
exit 255
fi
# 如果未安装则安装vsftpd
if [ "$INSTALLED_BEFORE_TEST" = false ]; then
LOG_INFO "安装vsftpd软件包"
dnf install -y vsftpd
CHECK_RESULT $? 0 0 "安装vsftpd失败"
fi
# 启动vsftpd服务
LOG_INFO "启动vsftpd服务"
systemctl start vsftpd
CHECK_RESULT $? 0 0 "启动vsftpd服务失败"
# 检查vsftpd服务状态
LOG_INFO "检查vsftpd服务状态"
systemctl status vsftpd | grep -q "active (running)"
CHECK_RESULT $? 0 0 "vsftpd服务未正常运行"
# 测试FTP基本连接
LOG_INFO "测试FTP基本连接"
timeout 5 ftp -n localhost <<EOF
user anonymous anonymous
bye
EOF
CHECK_RESULT $? 0 0 "FTP基本连接测试失败"
# 停止vsftpd服务
LOG_INFO "停止vsftpd服务"
systemctl stop vsftpd
CHECK_RESULT $? 0 0 "停止vsftpd服务失败"
# 清理环境如果测试前未安装则卸载vsftpd
if [ "$INSTALLED_BEFORE_TEST" = false ]; then
LOG_INFO "卸载vsftpd软件包"
dnf remove -y vsftpd
CHECK_RESULT $? 0 0 "卸载vsftpd失败"
else
LOG_INFO "测试前已安装vsftpd保持安装状态"
fi
LOG_INFO "测试完成Test basic FTP server connection"
}
main "$@"

View File

@@ -1,218 +0,0 @@
#!/usr/bin/bash
# Copyright (c) 2024 ISCAS .ALL rights reserved.
# This program is licensed under Mulan PSL v2.
# You can use it according to the terms and conditions of the Mulan PSL v2.
# http://license.coscl.org.cn/MulanPSL2
# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# #############################################
# @Author : honghua
# @Contact : honghua@iscas.ac.cn
# @Date : 2026-04-03
# @License : Mulan PSL v2
# @Desc : Test deleting a file on FTP server
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 测试FTP服务器上删除文件功能
LOG_INFO "开始测试Test deleting a file on FTP server"
# 定义软件包名称
FTP_PACKAGE="vsftpd"
FTP_CLIENT_PACKAGE="ftp"
# 检查是否已安装FTP服务器
LOG_INFO "步骤1检查FTP服务器是否已安装"
if rpm -q $FTP_PACKAGE >/dev/null 2>&1; then
LOG_INFO "FTP服务器已安装脚本结束时将保持安装状态"
FTP_INSTALLED=true
else
LOG_INFO "FTP服务器未安装将在测试过程中安装"
FTP_INSTALLED=false
fi
# 检查是否已安装FTP客户端
if rpm -q $FTP_CLIENT_PACKAGE >/dev/null 2>&1; then
LOG_INFO "FTP客户端已安装"
CLIENT_INSTALLED=true
else
LOG_INFO "FTP客户端未安装"
CLIENT_INSTALLED=false
fi
# 检查yum源中是否有FTP服务器软件包
LOG_INFO "步骤2检查yum源中是否有FTP服务器软件包"
dnf list available $FTP_PACKAGE >/dev/null 2>&1
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中未找到$FTP_PACKAGE软件包"
exit 255
fi
# 检查yum源中是否有FTP客户端软件包
LOG_INFO "步骤3检查yum源中是否有FTP客户端软件包"
dnf list available $FTP_CLIENT_PACKAGE >/dev/null 2>&1
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中未找到$FTP_CLIENT_PACKAGE软件包"
exit 255
fi
# 如果需要安装FTP服务器
if [ "$FTP_INSTALLED" = false ]; then
LOG_INFO "步骤4安装FTP服务器"
dnf install -y $FTP_PACKAGE
CHECK_RESULT $? 0 0 "安装FTP服务器失败"
fi
# 如果需要安装FTP客户端
if [ "$CLIENT_INSTALLED" = false ]; then
LOG_INFO "步骤5安装FTP客户端"
dnf install -y $FTP_CLIENT_PACKAGE
CHECK_RESULT $? 0 0 "安装FTP客户端失败"
fi
# 启动FTP服务
LOG_INFO "步骤6启动FTP服务"
systemctl start vsftpd
CHECK_RESULT $? 0 0 "启动FTP服务失败"
# 检查FTP服务状态
LOG_INFO "步骤7检查FTP服务状态"
systemctl status vsftpd | grep -q "active (running)"
CHECK_RESULT $? 0 0 "FTP服务未正常运行"
# 创建测试用户和目录
LOG_INFO "步骤8创建测试用户和目录"
TEST_USER="ftp_test_user"
TEST_PASS="ftp_test_pass123"
TEST_DIR="/home/$TEST_USER/ftp_test"
TEST_FILE="$TEST_DIR/test_file.txt"
# 检查用户是否已存在
if id "$TEST_USER" &>/dev/null; then
LOG_INFO "测试用户已存在,跳过创建"
else
useradd -m -s /bin/bash $TEST_USER
CHECK_RESULT $? 0 0 "创建测试用户失败"
echo "$TEST_USER:$TEST_PASS" | chpasswd
CHECK_RESULT $? 0 0 "设置测试用户密码失败"
fi
# 创建测试目录
mkdir -p $TEST_DIR
CHECK_RESULT $? 0 0 "创建测试目录失败"
chown $TEST_USER:$TEST_USER $TEST_DIR
CHECK_RESULT $? 0 0 "设置测试目录权限失败"
# 创建测试文件
LOG_INFO "步骤9创建测试文件"
echo "This is a test file for FTP delete operation" > $TEST_FILE
CHECK_RESULT $? 0 0 "创建测试文件失败"
chown $TEST_USER:$TEST_USER $TEST_FILE
CHECK_RESULT $? 0 0 "设置测试文件权限失败"
# 配置FTP允许本地用户登录
LOG_INFO "步骤10配置FTP服务器"
FTP_CONFIG="/etc/vsftpd/vsftpd.conf"
cp $FTP_CONFIG ${FTP_CONFIG}.backup
CHECK_RESULT $? 0 0 "备份FTP配置文件失败"
# 修改FTP配置
sed -i "s/^#local_enable=YES/local_enable=YES/" $FTP_CONFIG
sed -i "s/^#write_enable=YES/write_enable=YES/" $FTP_CONFIG
sed -i "s/^#chroot_local_user=YES/chroot_local_user=YES/" $FTP_CONFIG
# 重启FTP服务使配置生效
LOG_INFO "步骤11重启FTP服务"
systemctl restart vsftpd
CHECK_RESULT $? 0 0 "重启FTP服务失败"
# 等待服务完全启动
sleep 2
# 测试FTP删除文件功能
LOG_INFO "步骤12测试FTP删除文件功能"
# 创建FTP命令脚本
FTP_SCRIPT="/tmp/ftp_delete_test.script"
cat > $FTP_SCRIPT << EOF
user $TEST_USER
$TEST_PASS
cd ftp_test
delete test_file.txt
quit
EOF
# 执行FTP命令删除文件
LOG_INFO "步骤13执行FTP命令删除测试文件"
ftp -n localhost < $FTP_SCRIPT
CHECK_RESULT $? 0 0 "FTP删除文件命令执行失败"
# 验证文件是否已被删除
LOG_INFO "步骤14验证文件是否已被删除"
if [ -f "$TEST_FILE" ]; then
LOG_ERROR "测试文件未被删除"
CHECK_RESULT 1 0 0 "FTP删除文件功能测试失败"
else
LOG_INFO "测试文件已成功删除"
CHECK_RESULT 0 0 0 "FTP删除文件功能测试成功"
fi
# 清理测试环境
LOG_INFO "步骤15清理测试环境"
# 删除FTP命令脚本
rm -f $FTP_SCRIPT
CHECK_RESULT $? 0 0 "删除FTP命令脚本失败"
# 恢复FTP配置文件
if [ -f "${FTP_CONFIG}.backup" ]; then
mv ${FTP_CONFIG}.backup $FTP_CONFIG
CHECK_RESULT $? 0 0 "恢复FTP配置文件失败"
# 重启FTP服务
systemctl restart vsftpd
CHECK_RESULT $? 0 0 "重启FTP服务失败"
fi
# 删除测试目录
if [ -d "$TEST_DIR" ]; then
rm -rf $TEST_DIR
CHECK_RESULT $? 0 0 "删除测试目录失败"
fi
# 删除测试用户(如果是在测试过程中创建的)
if [ "$FTP_INSTALLED" = false ] && id "$TEST_USER" &>/dev/null; then
userdel -r $TEST_USER
CHECK_RESULT $? 0 0 "删除测试用户失败"
fi
# 停止FTP服务如果是在测试过程中安装的
if [ "$FTP_INSTALLED" = false ]; then
LOG_INFO "步骤16停止FTP服务"
systemctl stop vsftpd
CHECK_RESULT $? 0 0 "停止FTP服务失败"
fi
# 卸载软件包(如果是在测试过程中安装的)
if [ "$FTP_INSTALLED" = false ]; then
LOG_INFO "步骤17卸载FTP服务器"
dnf remove -y $FTP_PACKAGE
CHECK_RESULT $? 0 0 "卸载FTP服务器失败"
fi
if [ "$CLIENT_INSTALLED" = false ]; then
LOG_INFO "步骤18卸载FTP客户端"
dnf remove -y $FTP_CLIENT_PACKAGE
CHECK_RESULT $? 0 0 "卸载FTP客户端失败"
fi
LOG_INFO "测试完成Test deleting a file on FTP server"
}
main "$@"

View File

@@ -1,145 +0,0 @@
#!/usr/bin/bash
# Copyright (c) 2024 ISCAS .ALL rights reserved.
# This program is licensed under Mulan PSL v2.
# You can use it according to the terms and conditions of the Mulan PSL v2.
# http://license.coscl.org.cn/MulanPSL2
# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# #############################################
# @Author : honghua
# @Contact : honghua@iscas.ac.cn
# @Date : 2026-04-03
# @License : Mulan PSL v2
# @Desc : Test downloading a file via FTP
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 测试FTP下载文件功能
LOG_INFO "开始测试FTP下载文件功能"
# 定义软件包名称
PACKAGE_NAME="ftp"
# 检查软件包是否已安装
LOG_INFO "步骤1检查FTP客户端是否已安装"
if dnf list installed "$PACKAGE_NAME" &>/dev/null; then
LOG_INFO "FTP客户端已安装测试结束后将保持安装状态"
INSTALLED_BEFORE="true"
else
LOG_INFO "FTP客户端未安装将在测试前安装"
INSTALLED_BEFORE="false"
fi
# 检查软件包是否在yum源中
LOG_INFO "步骤2检查yum源中是否存在FTP客户端软件包"
if ! dnf list available "$PACKAGE_NAME" &>/dev/null; then
LOG_ERROR "yum源中未找到FTP客户端软件包"
exit 255
fi
# 如果未安装,则安装软件包
if [ "$INSTALLED_BEFORE" = "false" ]; then
LOG_INFO "步骤3安装FTP客户端"
dnf install -y "$PACKAGE_NAME"
CHECK_RESULT $? 0 0 "安装FTP客户端失败"
fi
# 测试FTP下载功能
LOG_INFO "步骤4测试FTP下载文件功能"
# 检查ftp命令是否存在
if ! command -v ftp &>/dev/null; then
LOG_ERROR "ftp命令不存在"
if [ "$INSTALLED_BEFORE" = "false" ]; then
dnf remove -y "$PACKAGE_NAME"
fi
exit 255
fi
# 检查ftp命令是否支持-b参数
if ! ftp --help 2>&1 | grep -q "\-b"; then
LOG_ERROR "ftp命令不支持-b参数"
if [ "$INSTALLED_BEFORE" = "false" ]; then
dnf remove -y "$PACKAGE_NAME"
fi
exit 255
fi
# 创建测试文件
LOG_INFO "步骤5创建测试文件"
TEST_FILE="test_ftp_download.txt"
echo "This is a test file for FTP download" > "$TEST_FILE"
CHECK_RESULT $? 0 0 "创建测试文件失败"
# 启动FTP服务器使用Python的简单FTP服务器
LOG_INFO "步骤6启动临时FTP服务器"
python3 -m pyftpdlib -p 2121 -d . -w &
FTP_SERVER_PID=$!
sleep 2
# 检查FTP服务器是否启动成功
if ! ps -p $FTP_SERVER_PID &>/dev/null; then
LOG_ERROR "FTP服务器启动失败"
rm -f "$TEST_FILE"
if [ "$INSTALLED_BEFORE" = "false" ]; then
dnf remove -y "$PACKAGE_NAME"
fi
exit 1
fi
# 下载文件
LOG_INFO "步骤7通过FTP下载文件"
DOWNLOADED_FILE="downloaded_test_file.txt"
ftp -n <<EOF
open localhost 2121
user anonymous anonymous
get $TEST_FILE $DOWNLOADED_FILE
quit
EOF
# 检查下载是否成功
if [ -f "$DOWNLOADED_FILE" ]; then
LOG_INFO "文件下载成功"
# 比较文件内容
if cmp -s "$TEST_FILE" "$DOWNLOADED_FILE"; then
LOG_INFO "下载的文件内容与原始文件一致"
CHECK_RESULT $? 0 0 "文件内容不一致"
else
LOG_ERROR "下载的文件内容与原始文件不一致"
CHECK_RESULT $? 0 1 "文件内容不一致"
fi
else
LOG_ERROR "文件下载失败"
CHECK_RESULT $? 0 1 "文件下载失败"
fi
# 清理临时文件
LOG_INFO "步骤8清理临时文件"
rm -f "$TEST_FILE" "$DOWNLOADED_FILE"
CHECK_RESULT $? 0 0 "清理临时文件失败"
# 停止FTP服务器
LOG_INFO "步骤9停止FTP服务器"
kill $FTP_SERVER_PID 2>/dev/null
wait $FTP_SERVER_PID 2>/dev/null
# 恢复环境
LOG_INFO "步骤10恢复测试环境"
if [ "$INSTALLED_BEFORE" = "false" ]; then
LOG_INFO "卸载测试期间安装的FTP客户端"
dnf remove -y "$PACKAGE_NAME"
CHECK_RESULT $? 0 0 "卸载FTP客户端失败"
else
LOG_INFO "保持FTP客户端安装状态"
fi
LOG_INFO "FTP下载文件功能测试完成"
}
main "$@"

View File

@@ -1,168 +0,0 @@
#!/usr/bin/bash
# Copyright (c) 2024 ISCAS .ALL rights reserved.
# This program is licensed under Mulan PSL v2.
# You can use it according to the terms and conditions of the Mulan PSL v2.
# http://license.coscl.org.cn/MulanPSL2
# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# #############################################
# @Author : honghua
# @Contact : honghua@iscas.ac.cn
# @Date : 2026-04-03
# @License : Mulan PSL v2
# @Desc : Check if FTP package is installed
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 定义颜色输出(用于日志函数)
RED="\033[1;31m"
GREEN="\033[1;32m"
YELLOW="\033[1;33m"
BLUE="\033[1;34m"
NC="\033[0m"
# 日志函数直接使用已定义的LOG_INFO和LOG_ERROR
LOG_INFO() {
echo -e "${GREEN}[INFO]${NC} $1"
}
LOG_ERROR() {
echo -e "${RED}[ERROR]${NC} $1"
}
# 检查软件包是否在yum源中
check_package_in_repo() {
local package_name=$1
LOG_INFO "检查yum源中是否存在软件包: $package_name"
dnf list available $package_name &>/dev/null
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中不存在软件包: $package_name"
exit 255
fi
LOG_INFO "软件包 $package_name 在yum源中存在"
}
# 检查命令参数是否支持
check_command_option() {
local command=$1
local option=$2
LOG_INFO "检查命令 $command 是否支持参数 $option"
$command --help 2>&1 | grep -q "\<$option\>"
if [ $? -ne 0 ]; then
LOG_ERROR "命令 $command 不支持参数 $option"
exit 255
fi
LOG_INFO "命令 $command 支持参数 $option"
}
# 检查软件包是否已安装
check_package_installed() {
local package_name=$1
LOG_INFO "检查软件包 $package_name 是否已安装"
rpm -q $package_name &>/dev/null
return $?
}
# 安装软件包
install_package() {
local package_name=$1
LOG_INFO "开始安装软件包: $package_name"
dnf install -y $package_name
CHECK_RESULT $? 0 0 "安装软件包 $package_name 失败"
LOG_INFO "软件包 $package_name 安装成功"
}
# 卸载软件包
uninstall_package() {
local package_name=$1
LOG_INFO "开始卸载软件包: $package_name"
dnf remove -y $package_name
CHECK_RESULT $? 0 0 "卸载软件包 $package_name 失败"
LOG_INFO "软件包 $package_name 卸载成功"
}
# 测试FTP功能
test_ftp_function() {
local package_name="vsftpd"
local was_installed=0
LOG_INFO "=== 开始测试FTP功能 ==="
# 步骤1检查软件包是否在yum源中
check_package_in_repo $package_name
# 步骤2检查是否已安装
if check_package_installed $package_name; then
LOG_INFO "软件包 $package_name 已经安装"
was_installed=1
else
LOG_INFO "软件包 $package_name 未安装,将进行安装测试"
was_installed=0
fi
# 步骤3如果未安装则安装
if [ $was_installed -eq 0 ]; then
install_package $package_name
fi
# 步骤4检查FTP服务状态
LOG_INFO "检查FTP服务状态"
systemctl status vsftpd &>/dev/null
CHECK_RESULT $? 0 0 "FTP服务状态检查失败"
LOG_INFO "FTP服务状态正常"
# 步骤5测试FTP基本功能
LOG_INFO "测试FTP基本功能"
ftp_version=$(vsftpd -v 2>&1 | head -1)
CHECK_RESULT $? 0 0 "获取FTP版本失败"
LOG_INFO "FTP版本信息: $ftp_version"
# 步骤6检查FTP配置文件
LOG_INFO "检查FTP配置文件"
if [ -f /etc/vsftpd/vsftpd.conf ]; then
LOG_INFO "FTP配置文件存在: /etc/vsftpd/vsftpd.conf"
# 检查配置文件基本语法
vsftpd -olisten=NO /etc/vsftpd/vsftpd.conf &>/dev/null
CHECK_RESULT $? 0 0 "FTP配置文件语法检查失败"
else
LOG_ERROR "FTP配置文件不存在"
CHECK_RESULT 1 0 0 "FTP配置文件不存在"
fi
# 步骤7如果之前未安装则卸载软件包
if [ $was_installed -eq 0 ]; then
LOG_INFO "测试完成,清理测试环境"
uninstall_package $package_name
else
LOG_INFO "测试完成,保持原有安装状态"
fi
LOG_INFO "=== FTP功能测试完成 ==="
}
# 主函数
main() {
LOG_INFO "开始执行FTP功能安装检查测试"
# 检查dnf命令是否可用
LOG_INFO "检查dnf命令是否可用"
command -v dnf &>/dev/null
CHECK_RESULT $? 0 0 "dnf命令不可用"
# 执行FTP功能测试
test_ftp_function
LOG_INFO "测试脚本执行完成"
}
# 执行主函数
main
}
main "$@"

View File

@@ -1,92 +0,0 @@
#!/usr/bin/bash
# Copyright (c) 2024 ISCAS .ALL rights reserved.
# This program is licensed under Mulan PSL v2.
# You can use it according to the terms and conditions of the Mulan PSL v2.
# http://license.coscl.org.cn/MulanPSL2
# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# #############################################
# @Author : honghua
# @Contact : honghua@iscas.ac.cn
# @Date : 2026-04-03
# @License : Mulan PSL v2
# @Desc : Test listing directory contents via FTP
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
set -e
LOG_INFO "开始测试通过FTP列出目录内容"
LOG_INFO "步骤1检查是否已安装vsftpd软件包"
if ! dnf list installed vsftpd &>/dev/null; then
LOG_INFO "vsftpd未安装将在测试过程中安装"
INSTALLED_VSFTPD=false
else
LOG_INFO "vsftpd已安装"
INSTALLED_VSFTPD=true
fi
LOG_INFO "步骤2检查yum源中是否有vsftpd软件包"
if ! dnf list available vsftpd &>/dev/null; then
LOG_ERROR "yum源中未找到vsftpd软件包"
exit 255
fi
if [ "$INSTALLED_VSFTPD" = "false" ]; then
LOG_INFO "步骤3安装vsftpd软件包"
dnf install -y vsftpd
CHECK_RESULT $? 0 0 "安装vsftpd失败"
fi
LOG_INFO "步骤4启动vsftpd服务"
systemctl start vsftpd
CHECK_RESULT $? 0 0 "启动vsftpd服务失败"
LOG_INFO "步骤5检查vsftpd服务状态"
systemctl is-active vsftpd
CHECK_RESULT $? 0 0 "vsftpd服务未正常运行"
LOG_INFO "步骤6创建测试用户和目录"
useradd -m -s /bin/bash ftptestuser
CHECK_RESULT $? 0 0 "创建测试用户失败"
echo "ftppassword" | passwd --stdin ftptestuser
CHECK_RESULT $? 0 0 "设置测试用户密码失败"
LOG_INFO "步骤7创建测试文件"
echo "test file content" > /home/ftptestuser/testfile.txt
CHECK_RESULT $? 0 0 "创建测试文件失败"
LOG_INFO "步骤8使用FTP命令列出目录内容"
FTP_OUTPUT=$(echo -e "user ftptestuser ftppassword\nls\nbye" | ftp -n localhost 2>/dev/null)
CHECK_RESULT $? 0 0 "FTP连接失败"
LOG_INFO "步骤9验证FTP目录列表结果"
echo "$FTP_OUTPUT" | grep -q "testfile.txt"
CHECK_RESULT $? 0 0 "FTP目录列表未显示测试文件"
LOG_INFO "步骤10清理测试用户和文件"
userdel -r ftptestuser
CHECK_RESULT $? 0 0 "删除测试用户失败"
if [ "$INSTALLED_VSFTPD" = "false" ]; then
LOG_INFO "步骤11卸载vsftpd软件包"
systemctl stop vsftpd
dnf remove -y vsftpd
CHECK_RESULT $? 0 0 "卸载vsftpd失败"
else
LOG_INFO "步骤11保持vsftpd安装状态停止服务"
systemctl stop vsftpd
CHECK_RESULT $? 0 0 "停止vsftpd服务失败"
fi
LOG_INFO "测试完成通过FTP列出目录内容测试成功"
}
main "$@"

View File

@@ -1,84 +0,0 @@
#!/usr/bin/bash
# Copyright (c) 2024 ISCAS .ALL rights reserved.
# This program is licensed under Mulan PSL v2.
# You can use it according to the terms and conditions of the Mulan PSL v2.
# http://license.coscl.org.cn/MulanPSL2
# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# #############################################
# @Author : honghua
# @Contact : honghua@iscas.ac.cn
# @Date : 2026-04-03
# @License : Mulan PSL v2
# @Desc : Test FTP connection in passive mode
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试FTP被动模式连接功能"
LOG_INFO "步骤1: 检查FTP客户端软件包是否在yum源中"
dnf list available ftp 2>/dev/null | grep -q "^ftp"
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中未找到ftp软件包"
exit 255
fi
LOG_INFO "步骤2: 检查当前是否已安装FTP客户端"
rpm -q ftp >/dev/null 2>&1
IS_INSTALLED=$?
if [ $IS_INSTALLED -ne 0 ]; then
LOG_INFO "FTP客户端未安装开始安装"
dnf install -y ftp
CHECK_RESULT $? 0 0 "安装FTP客户端失败"
# 设置安装标记,用于脚本结束时卸载
NEED_UNINSTALL=1
else
LOG_INFO "FTP客户端已安装"
NEED_UNINSTALL=0
fi
LOG_INFO "步骤3: 检查ftp命令是否支持被动模式参数"
ftp -h 2>&1 | grep -q "\-p"
if [ $? -ne 0 ]; then
LOG_ERROR "ftp命令不支持被动模式参数"
# 清理环境
if [ $NEED_UNINSTALL -eq 1 ]; then
dnf remove -y ftp
fi
exit 255
fi
LOG_INFO "步骤4: 测试FTP被动模式连接"
# 假设测试环境配置
FTP_SERVER="test.ftp.server"
FTP_USER="anonymous"
FTP_PASS=""
LOG_INFO "尝试连接到FTP服务器: $FTP_SERVER"
ftp -p -n $FTP_SERVER <<EOF
user $FTP_USER $FTP_PASS
quit
EOF
FTP_EXIT_CODE=$?
CHECK_RESULT $FTP_EXIT_CODE 0 0 "FTP被动模式连接失败"
LOG_INFO "步骤5: 清理测试环境"
if [ $NEED_UNINSTALL -eq 1 ]; then
LOG_INFO "卸载测试期间安装的FTP客户端"
dnf remove -y ftp
CHECK_RESULT $? 0 0 "卸载FTP客户端失败"
fi
LOG_INFO "FTP被动模式连接测试完成"
}
main "$@"

View File

@@ -1,90 +0,0 @@
#!/usr/bin/bash
# Copyright (c) 2024 ISCAS .ALL rights reserved.
# This program is licensed under Mulan PSL v2.
# You can use it according to the terms and conditions of the Mulan PSL v2.
# http://license.coscl.org.cn/MulanPSL2
# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# #############################################
# @Author : honghua
# @Contact : honghua@iscas.ac.cn
# @Date : 2026-04-03
# @License : Mulan PSL v2
# @Desc : Test uploading a file via FTP
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 判断是否已安装ftp客户端
LOG_INFO "检查ftp客户端是否已安装"
if command -v ftp &> /dev/null; then
LOG_INFO "ftp客户端已安装测试结束后将保持安装状态"
INSTALLED=true
else
LOG_INFO "ftp客户端未安装将在测试前安装"
INSTALLED=false
fi
# 检查yum源中是否有ftp客户端软件包
LOG_INFO "检查yum源中是否有ftp客户端软件包"
if ! dnf list available ftp &> /dev/null; then
LOG_ERROR "yum源中未找到ftp客户端软件包"
exit 255
fi
# 如果未安装则安装ftp客户端
if [ "$INSTALLED" = false ]; then
LOG_INFO "安装ftp客户端"
dnf install -y ftp
CHECK_RESULT $? 0 0 "安装ftp客户端失败"
fi
# 检查ftp命令是否支持所需参数
LOG_INFO "检查ftp命令是否支持所需参数"
ftp -h 2>&1 | grep -q "-n"
CHECK_RESULT $? 0 0 "ftp命令不支持-n参数" 255
# 准备测试文件
LOG_INFO "准备测试文件"
TEST_FILE="test_upload_$(date +%s).txt"
echo "This is a test file for FTP upload." > "$TEST_FILE"
CHECK_RESULT $? 0 0 "创建测试文件失败"
# 设置FTP服务器信息示例服务器实际使用时需要替换
FTP_SERVER="ftp.example.com"
FTP_USER="anonymous"
FTP_PASS="password"
REMOTE_DIR="/upload"
# 测试上传文件到FTP服务器
LOG_INFO "测试上传文件到FTP服务器"
ftp -n $FTP_SERVER << EOF
user $FTP_USER $FTP_PASS
binary
cd $REMOTE_DIR
put $TEST_FILE
bye
EOF
CHECK_RESULT $? 0 0 "FTP上传文件失败"
# 清理本地测试文件
LOG_INFO "清理本地测试文件"
rm -f "$TEST_FILE"
CHECK_RESULT $? 0 0 "删除测试文件失败"
# 如果测试前未安装则卸载ftp客户端
if [ "$INSTALLED" = false ]; then
LOG_INFO "卸载ftp客户端"
dnf remove -y ftp
CHECK_RESULT $? 0 0 "卸载ftp客户端失败"
fi
LOG_INFO "FTP文件上传功能测试完成"
}
main "$@"

View File

@@ -1,81 +0,0 @@
#!/usr/bin/bash
# Copyright (c) 2024 ISCAS .ALL rights reserved.
# This program is licensed under Mulan PSL v2.
# You can use it according to the terms and conditions of the Mulan PSL v2.
# http://license.coscl.org.cn/MulanPSL2
# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# #############################################
# @Author : honghua
# @Contact : honghua@iscas.ac.cn
# @Date : 2026-04-03
# @License : Mulan PSL v2
# @Desc : 测试pftp命令的-A参数用于启用主动模式
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试pftp命令的-A参数用于启用主动模式"
# 检查是否已安装ftp客户端软件包
LOG_INFO "检查是否已安装ftp客户端软件包"
if rpm -q ftp &>/dev/null; then
LOG_INFO "ftp客户端已安装"
INSTALLED=true
else
LOG_INFO "ftp客户端未安装"
INSTALLED=false
fi
# 检查yum源中是否有ftp软件包
LOG_INFO "检查yum源中是否有ftp软件包"
if ! dnf list available ftp &>/dev/null; then
LOG_ERROR "yum源中没有ftp软件包"
exit 255
fi
# 如果未安装则安装ftp客户端
if [ "$INSTALLED" = false ]; then
LOG_INFO "开始安装ftp客户端"
dnf install -y ftp
CHECK_RESULT $? 0 0 "安装ftp客户端失败"
LOG_INFO "ftp客户端安装成功"
fi
# 检查pftp命令是否支持-A参数
LOG_INFO "检查pftp命令是否支持-A参数"
if ! pftp -h 2>&1 | grep -q "\-A"; then
LOG_ERROR "pftp命令不支持-A参数"
if [ "$INSTALLED" = false ]; then
LOG_INFO "开始卸载ftp客户端"
dnf remove -y ftp
LOG_INFO "ftp客户端卸载成功"
fi
exit 255
fi
# 测试pftp命令的-A参数
LOG_INFO "测试pftp命令的-A参数"
pftp -A localhost <<EOF
quit
EOF
CHECK_RESULT $? 0 0 "pftp命令-A参数测试失败"
# 清理环境如果之前未安装则卸载ftp客户端
if [ "$INSTALLED" = false ]; then
LOG_INFO "开始卸载ftp客户端"
dnf remove -y ftp
CHECK_RESULT $? 0 0 "卸载ftp客户端失败"
LOG_INFO "ftp客户端卸载成功"
fi
LOG_INFO "pftp命令-A参数测试完成"
}
main "$@"

View File

@@ -1,125 +0,0 @@
#!/usr/bin/bash
# Copyright (c) 2024 ISCAS .ALL rights reserved.
# This program is licensed under Mulan PSL v2.
# You can use it according to the terms and conditions of the Mulan PSL v2.
# http://license.coscl.org.cn/MulanPSL2
# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# #############################################
# @Author : honghua
# @Contact : honghua@iscas.ac.cn
# @Date : 2026-04-03
# @License : Mulan PSL v2
# @Desc : 测试pftp命令的-B参数用于设置缓冲区大小
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 定义日志函数
LOG_INFO() {
echo "[INFO] $1"
}
LOG_ERROR() {
echo "[ERROR] $1"
}
# 检查软件包是否存在
check_package_exists() {
local package_name=$1
dnf list available "$package_name" &>/dev/null
if [ $? -ne 0 ]; then
LOG_ERROR "软件包 $package_name 在yum源中不存在"
exit 255
fi
}
# 检查命令参数是否存在
check_command_param() {
local command=$1
local param=$2
$command --help 2>&1 | grep -q "$param"
if [ $? -ne 0 ]; then
LOG_ERROR "命令 $command 不支持参数 $param"
exit 255
fi
}
# 主测试函数
test_pftp_buffer_param() {
LOG_INFO "开始测试pftp命令的-B参数用于设置缓冲区大小"
# 检查是否已安装ftp软件包
LOG_INFO "检查ftp软件包是否已安装"
if rpm -q ftp &>/dev/null; then
LOG_INFO "ftp软件包已安装测试后保持安装状态"
already_installed=true
else
LOG_INFO "ftp软件包未安装开始安装"
already_installed=false
# 检查软件包是否存在
check_package_exists "ftp"
# 安装软件包
LOG_INFO "安装ftp软件包"
dnf install -y ftp
CHECK_RESULT $? 0 0 "安装ftp软件包失败"
fi
# 检查pftp命令是否存在
LOG_INFO "检查pftp命令是否存在"
which pftp &>/dev/null
CHECK_RESULT $? 0 0 "pftp命令不存在"
# 检查-B参数是否支持
LOG_INFO "检查pftp命令是否支持-B参数"
check_command_param "pftp" "-B"
# 测试-B参数的基本功能
LOG_INFO "测试pftp命令-B参数设置缓冲区大小"
pftp --help 2>&1 | grep -A2 "-B" | grep -q "buffer"
CHECK_RESULT $? 0 0 "pftp命令-B参数不是用于设置缓冲区大小"
# 测试具体的缓冲区大小设置
LOG_INFO "测试设置缓冲区大小为4096"
pftp -B 4096 --help 2>&1 >/dev/null
CHECK_RESULT $? 0 0 "设置缓冲区大小失败"
LOG_INFO "测试设置缓冲区大小为8192"
pftp -B 8192 --help 2>&1 >/dev/null
CHECK_RESULT $? 0 0 "设置缓冲区大小失败"
# 测试无效缓冲区大小
LOG_INFO "测试无效的缓冲区大小设置"
pftp -B 0 --help 2>&1 >/dev/null
if [ $? -eq 0 ]; then
LOG_INFO "缓冲区大小0被接受这可能是有效的"
fi
LOG_INFO "pftp命令-B参数测试完成"
# 环境清理
LOG_INFO "开始环境清理"
if [ "$already_installed" = false ]; then
LOG_INFO "卸载测试安装的ftp软件包"
dnf remove -y ftp
CHECK_RESULT $? 0 0 "卸载ftp软件包失败"
LOG_INFO "ftp软件包已卸载"
else
LOG_INFO "保持原有安装状态不卸载ftp软件包"
fi
LOG_INFO "测试脚本执行完成"
}
# 执行测试
test_pftp_buffer_param
}
main "$@"

View File

@@ -1,86 +0,0 @@
#!/usr/bin/bash
# Copyright (c) 2024 ISCAS .ALL rights reserved.
# This program is licensed under Mulan PSL v2.
# You can use it according to the terms and conditions of the Mulan PSL v2.
# http://license.coscl.org.cn/MulanPSL2
# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# #############################################
# @Author : honghua
# @Contact : honghua@iscas.ac.cn
# @Date : 2026-04-03
# @License : Mulan PSL v2
# @Desc : 测试pftp命令的-C参数用于启用压缩模式
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 检查是否已安装ftp软件包
LOG_INFO "检查是否已安装ftp软件包"
if ! dnf list installed ftp &>/dev/null; then
LOG_INFO "未安装ftp软件包开始安装"
# 检查yum源中是否有ftp软件包
LOG_INFO "检查yum源中是否有ftp软件包"
if ! dnf list available ftp &>/dev/null; then
LOG_ERROR "yum源中无ftp软件包"
exit 255
fi
# 安装ftp软件包
dnf install -y ftp
CHECK_RESULT $? 0 0 "安装ftp软件包失败"
INSTALLED_FLAG=1
else
LOG_INFO "ftp软件包已安装"
INSTALLED_FLAG=0
fi
# 测试pftp命令的-C参数用于启用压缩模式
LOG_INFO "测试pftp命令的-C参数用于启用压缩模式"
# 检查pftp命令是否存在
if ! command -v pftp &>/dev/null; then
LOG_ERROR "pftp命令不存在"
if [ $INSTALLED_FLAG -eq 1 ]; then
dnf remove -y ftp
CHECK_RESULT $? 0 0 "卸载ftp软件包失败"
fi
exit 255
fi
# 检查pftp是否支持-C参数
LOG_INFO "检查pftp是否支持-C参数"
pftp --help 2>&1 | grep -q "\-C"
if [ $? -ne 0 ]; then
LOG_ERROR "pftp命令不支持-C参数"
if [ $INSTALLED_FLAG -eq 1 ]; then
dnf remove -y ftp
CHECK_RESULT $? 0 0 "卸载ftp软件包失败"
fi
exit 255
fi
# 测试pftp命令的-C参数功能
LOG_INFO "测试pftp命令的-C参数功能"
# 使用-C参数连接到本地FTP服务器假设本地有FTP服务
# 这里使用一个不存在的FTP服务器地址仅测试参数解析
pftp -C -n 127.0.0.1 2>&1 | head -5
CHECK_RESULT $? 0 0 "pftp命令-C参数执行失败"
# 清理环境
LOG_INFO "清理环境"
if [ $INSTALLED_FLAG -eq 1 ]; then
LOG_INFO "卸载ftp软件包"
dnf remove -y ftp
CHECK_RESULT $? 0 0 "卸载ftp软件包失败"
else
LOG_INFO "保持ftp软件包安装状态"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -1,80 +0,0 @@
#!/usr/bin/bash
# Copyright (c) 2024 ISCAS .ALL rights reserved.
# This program is licensed under Mulan PSL v2.
# You can use it according to the terms and conditions of the Mulan PSL v2.
# http://license.coscl.org.cn/MulanPSL2
# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# #############################################
# @Author : honghua
# @Contact : honghua@iscas.ac.cn
# @Date : 2026-04-03
# @License : Mulan PSL v2
# @Desc : 测试pftp命令的-D参数用于启用调试模式
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试pftp命令的-D参数用于启用调试模式"
LOG_INFO "检查是否已安装ftp客户端软件包"
if ! dnf list installed ftp &>/dev/null; then
LOG_INFO "ftp客户端未安装开始安装"
LOG_INFO "检查yum源中是否存在ftp软件包"
if ! dnf list available ftp &>/dev/null; then
LOG_ERROR "yum源中不存在ftp软件包"
exit 255
fi
dnf install -y ftp
CHECK_RESULT $? 0 0 "安装ftp客户端失败"
INSTALLED_FLAG=1
else
LOG_INFO "ftp客户端已安装"
INSTALLED_FLAG=0
fi
LOG_INFO "检查pftp命令是否支持-D参数"
pftp -h 2>&1 | grep -q -- "-D"
if [ $? -ne 0 ]; then
LOG_ERROR "pftp命令不支持-D参数"
if [ $INSTALLED_FLAG -eq 1 ]; then
LOG_INFO "卸载安装的ftp客户端"
dnf remove -y ftp
fi
exit 255
fi
LOG_INFO "测试pftp命令的-D参数功能"
pftp -D /tmp/pftp_debug.log -n <<EOF
quit
EOF
CHECK_RESULT $? 0 0 "pftp命令-D参数执行失败"
LOG_INFO "检查调试日志文件是否生成"
if [ -f /tmp/pftp_debug.log ]; then
LOG_INFO "调试日志文件已生成"
CHECK_RESULT 0 0 0 "调试日志文件检查"
else
LOG_ERROR "调试日志文件未生成"
CHECK_RESULT 1 0 1 "调试日志文件检查"
fi
LOG_INFO "清理临时文件"
rm -f /tmp/pftp_debug.log
LOG_INFO "恢复环境状态"
if [ $INSTALLED_FLAG -eq 1 ]; then
LOG_INFO "卸载安装的ftp客户端"
dnf remove -y ftp
CHECK_RESULT $? 0 0 "卸载ftp客户端失败"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -1,121 +0,0 @@
#!/usr/bin/bash
# Copyright (c) 2024 ISCAS .ALL rights reserved.
# This program is licensed under Mulan PSL v2.
# You can use it according to the terms and conditions of the Mulan PSL v2.
# http://license.coscl.org.cn/MulanPSL2
# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# #############################################
# @Author : honghua
# @Contact : honghua@iscas.ac.cn
# @Date : 2026-04-03
# @License : Mulan PSL v2
# @Desc : 测试pftp命令的-E参数用于启用EPSV模式
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 定义颜色和日志函数
LOG_INFO() {
echo "[INFO] $*"
}
LOG_ERROR() {
echo "[ERROR] $*" >&2
}
# 检查软件包是否在yum源中
check_package_in_repo() {
local pkg=$1
LOG_INFO "检查yum源中是否存在软件包: $pkg"
if ! dnf list available "$pkg" &>/dev/null; then
LOG_ERROR "软件包 $pkg 不在yum源中"
exit 255
fi
LOG_INFO "软件包 $pkg 在yum源中存在"
}
# 安装软件包
install_package() {
local pkg=$1
LOG_INFO "安装软件包: $pkg"
dnf install -y "$pkg"
CHECK_RESULT $? 0 0 "安装软件包 $pkg 失败"
}
# 卸载软件包
uninstall_package() {
local pkg=$1
LOG_INFO "卸载软件包: $pkg"
dnf remove -y "$pkg"
CHECK_RESULT $? 0 0 "卸载软件包 $pkg 失败"
}
# 检查命令参数是否支持
check_command_param() {
local cmd=$1
local param=$2
LOG_INFO "检查命令 $cmd 是否支持参数 $param"
if ! $cmd --help 2>&1 | grep -q "\b$param\b"; then
LOG_ERROR "命令 $cmd 不支持参数 $param"
exit 255
fi
LOG_INFO "命令 $cmd 支持参数 $param"
}
# 主测试函数
test_ftp_pftp_upper_e() {
LOG_INFO "开始测试pftp命令的-E参数用于启用EPSV模式"
# 定义软件包名称
local pkg_name="ftp"
# 检查软件包是否已在yum源中
check_package_in_repo "$pkg_name"
# 检查是否已安装
local installed=false
if rpm -q "$pkg_name" &>/dev/null; then
LOG_INFO "软件包 $pkg_name 已安装"
installed=true
else
LOG_INFO "软件包 $pkg_name 未安装,开始安装"
install_package "$pkg_name"
fi
# 检查pftp命令是否存在
LOG_INFO "检查pftp命令是否存在"
command -v pftp >/dev/null
CHECK_RESULT $? 0 0 "pftp命令不存在"
# 检查pftp命令是否支持-E参数
check_command_param "pftp" "-E"
# 测试pftp命令的-E参数
LOG_INFO "测试pftp命令的-E参数"
pftp -E -h 2>&1 | grep -q "EPSV"
CHECK_RESULT $? 0 0 "pftp命令-E参数启用EPSV模式失败"
LOG_INFO "pftp命令-E参数启用EPSV模式测试成功"
# 环境恢复
LOG_INFO "开始环境恢复"
if [ "$installed" = "false" ]; then
uninstall_package "$pkg_name"
else
LOG_INFO "保持软件包 $pkg_name 的安装状态"
fi
LOG_INFO "测试完成"
}
# 执行测试
test_ftp_pftp_upper_e
}
main "$@"

View File

@@ -1,80 +0,0 @@
#!/usr/bin/bash
# Copyright (c) 2024 ISCAS .ALL rights reserved.
# This program is licensed under Mulan PSL v2.
# You can use it according to the terms and conditions of the Mulan PSL v2.
# http://license.coscl.org.cn/MulanPSL2
# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# #############################################
# @Author : honghua
# @Contact : honghua@iscas.ac.cn
# @Date : 2026-04-03
# @License : Mulan PSL v2
# @Desc : 测试pftp命令的-F参数用于设置FTP命令
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试pftp命令的-F参数用于设置FTP命令"
# 检查是否已安装ftp软件包
LOG_INFO "检查是否已安装ftp软件包"
rpm -q ftp &>/dev/null
if [ $? -eq 0 ]; then
LOG_INFO "ftp软件包已安装测试结束后将保持安装状态"
INSTALLED=true
else
LOG_INFO "ftp软件包未安装将在测试前安装并在测试后卸载"
INSTALLED=false
fi
# 检查yum源中是否有ftp软件包
LOG_INFO "检查yum源中是否有ftp软件包"
dnf list available ftp &>/dev/null
CHECK_RESULT $? 0 0 "yum源中未找到ftp软件包"
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中未找到ftp软件包"
exit 255
fi
# 如果未安装则安装ftp软件包
if [ "$INSTALLED" = false ]; then
LOG_INFO "安装ftp软件包"
dnf install -y ftp
CHECK_RESULT $? 0 0 "安装ftp软件包失败"
fi
# 检查pftp命令的-F参数是否存在
LOG_INFO "检查pftp命令的-F参数是否存在"
pftp -F 2>&1 | grep -q "usage:"
if [ $? -ne 0 ]; then
LOG_ERROR "pftp命令不支持-F参数"
if [ "$INSTALLED" = false ]; then
LOG_INFO "卸载ftp软件包"
dnf remove -y ftp
CHECK_RESULT $? 0 0 "卸载ftp软件包失败"
fi
exit 255
fi
# 测试pftp命令的-F参数
LOG_INFO "测试pftp命令的-F参数"
pftp -F /tmp/test_ftp_config 2>&1 | grep -q "usage:"
CHECK_RESULT $? 0 0 "pftp命令的-F参数测试失败"
# 清理环境
if [ "$INSTALLED" = false ]; then
LOG_INFO "卸载ftp软件包"
dnf remove -y ftp
CHECK_RESULT $? 0 0 "卸载ftp软件包失败"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -1,95 +0,0 @@
#!/usr/bin/bash
# Copyright (c) 2024 ISCAS .ALL rights reserved.
# This program is licensed under Mulan PSL v2.
# You can use it according to the terms and conditions of the Mulan PSL v2.
# http://license.coscl.org.cn/MulanPSL2
# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# #############################################
# @Author : honghua
# @Contact : honghua@iscas.ac.cn
# @Date : 2026-04-03
# @License : Mulan PSL v2
# @Desc : 测试pftp命令的-G参数用于禁用通配符扩展
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 检查是否已安装ftp软件包
LOG_INFO "检查ftp软件包是否已安装"
rpm -q ftp > /dev/null 2>&1
if [ $? -eq 0 ]; then
LOG_INFO "ftp软件包已安装脚本结束后将保持安装状态"
ALREADY_INSTALLED=1
else
LOG_INFO "ftp软件包未安装将在测试过程中安装"
ALREADY_INSTALLED=0
fi
# 检查yum源中是否有ftp软件包
LOG_INFO "检查yum源中是否有ftp软件包"
dnf list available ftp > /dev/null 2>&1
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中没有ftp软件包"
exit 255
fi
# 如果未安装则安装ftp软件包
if [ $ALREADY_INSTALLED -eq 0 ]; then
LOG_INFO "安装ftp软件包"
dnf install -y ftp
CHECK_RESULT $? 0 0 "安装ftp软件包失败"
fi
# 检查pftp命令是否存在
LOG_INFO "检查pftp命令是否存在"
which pftp > /dev/null 2>&1
if [ $? -ne 0 ]; then
LOG_ERROR "pftp命令不存在"
if [ $ALREADY_INSTALLED -eq 0 ]; then
LOG_INFO "清理环境卸载ftp软件包"
dnf remove -y ftp
fi
exit 255
fi
# 检查pftp命令是否支持-G参数
LOG_INFO "检查pftp命令是否支持-G参数"
pftp -h 2>&1 | grep -q "\-G"
if [ $? -ne 0 ]; then
LOG_ERROR "pftp命令不支持-G参数"
if [ $ALREADY_INSTALLED -eq 0 ]; then
LOG_INFO "清理环境卸载ftp软件包"
dnf remove -y ftp
fi
exit 255
fi
# 测试pftp命令的-G参数功能
LOG_INFO "测试pftp命令的-G参数用于禁用通配符扩展"
# 这里使用一个简单的测试尝试连接到一个不存在的FTP服务器并检查-G参数是否被正确解析
pftp -G -n 127.0.0.1 21 << EOF
quit
EOF
# 由于我们只是测试参数是否被接受,所以不检查连接是否成功
# 如果-G参数不被支持pftp会报错我们已经在前面的检查中处理了这种情况
LOG_INFO "pftp命令的-G参数测试完成"
# 清理环境
if [ $ALREADY_INSTALLED -eq 0 ]; then
LOG_INFO "清理环境卸载ftp软件包"
dnf remove -y ftp
CHECK_RESULT $? 0 0 "卸载ftp软件包失败"
else
LOG_INFO "保持ftp软件包安装状态"
fi
LOG_INFO "测试脚本执行完成"
}
main "$@"

View File

@@ -1,71 +0,0 @@
#!/usr/bin/bash
# Copyright (c) 2024 ISCAS .ALL rights reserved.
# This program is licensed under Mulan PSL v2.
# You can use it according to the terms and conditions of the Mulan PSL v2.
# http://license.coscl.org.cn/MulanPSL2
# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# #############################################
# @Author : honghua
# @Contact : honghua@iscas.ac.cn
# @Date : 2026-04-03
# @License : Mulan PSL v2
# @Desc : 测试pftp命令的-H参数用于指定主机
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "测试开始测试pftp命令的-H参数用于指定主机"
# 检查是否已安装ftp客户端软件包
LOG_INFO "步骤1检查ftp客户端是否已安装"
if dnf list installed ftp &> /dev/null; then
LOG_INFO "ftp客户端已安装脚本结束后将保持安装状态"
INSTALLED=true
else
LOG_INFO "ftp客户端未安装将在测试过程中安装"
INSTALLED=false
fi
# 检查yum源中是否有ftp软件包
LOG_INFO "步骤2检查yum源中是否有ftp软件包"
if ! dnf list available ftp &> /dev/null; then
LOG_ERROR "yum源中未找到ftp软件包"
exit 255
fi
# 如果未安装则安装ftp客户端
if [ "$INSTALLED" = false ]; then
LOG_INFO "步骤3安装ftp客户端"
dnf install -y ftp
CHECK_RESULT $? 0 0 "安装ftp客户端失败"
fi
# 测试pftp命令的-H参数
LOG_INFO "步骤4测试pftp命令的-H参数"
pftp -H localhost <<EOF
quit
EOF
CHECK_RESULT $? 0 0 "pftp命令的-H参数测试失败"
# 测试pftp命令不支持的其他参数例如不存在的-Z参数
LOG_INFO "步骤5测试pftp命令不支持的其他参数"
pftp -Z localhost 2>&1 | grep -q "invalid option"
CHECK_RESULT $? 0 0 "pftp命令错误地支持了不存在的参数"
# 清理环境如果之前未安装则卸载ftp客户端
if [ "$INSTALLED" = false ]; then
LOG_INFO "步骤6卸载ftp客户端"
dnf remove -y ftp
CHECK_RESULT $? 0 0 "卸载ftp客户端失败"
fi
LOG_INFO "测试完成pftp命令的-H参数测试通过"
}
main "$@"

View File

@@ -1,94 +0,0 @@
#!/usr/bin/bash
# Copyright (c) 2024 ISCAS .ALL rights reserved.
# This program is licensed under Mulan PSL v2.
# You can use it according to the terms and conditions of the Mulan PSL v2.
# http://license.coscl.org.cn/MulanPSL2
# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# #############################################
# @Author : honghua
# @Contact : honghua@iscas.ac.cn
# @Date : 2026-04-03
# @License : Mulan PSL v2
# @Desc : 测试pftp命令的-I参数用于指定输入文件
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 检查是否已安装ftp软件包
LOG_INFO "检查是否已安装ftp软件包"
rpm -q ftp > /dev/null 2>&1
if [ $? -eq 0 ]; then
LOG_INFO "ftp软件包已安装测试结束后将保持安装状态"
INSTALLED_FLAG=1
else
LOG_INFO "ftp软件包未安装将在测试前安装"
INSTALLED_FLAG=0
fi
# 检查yum源中是否有ftp软件包
LOG_INFO "检查yum源中是否有ftp软件包"
dnf list available ftp > /dev/null 2>&1
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中未找到ftp软件包"
exit 255
fi
# 如果未安装则安装ftp软件包
if [ $INSTALLED_FLAG -eq 0 ]; then
LOG_INFO "安装ftp软件包"
dnf install -y ftp
CHECK_RESULT $? 0 0 "安装ftp软件包失败"
fi
# 测试pftp命令的-I参数
LOG_INFO "测试pftp命令的-I参数用于指定输入文件"
# 创建测试输入文件
LOG_INFO "创建测试输入文件"
echo "test data for pftp -I" > /tmp/test_input.txt
CHECK_RESULT $? 0 0 "创建测试输入文件失败"
# 检查pftp命令是否支持-I参数
LOG_INFO "检查pftp命令是否支持-I参数"
pftp --help 2>&1 | grep -q "\-I"
if [ $? -ne 0 ]; then
LOG_ERROR "pftp命令不支持-I参数"
# 清理测试文件
rm -f /tmp/test_input.txt
# 如果测试前未安装,则卸载软件包
if [ $INSTALLED_FLAG -eq 0 ]; then
LOG_INFO "卸载ftp软件包"
dnf remove -y ftp
fi
exit 255
fi
# 尝试使用pftp的-I参数这里只是测试参数语法不实际连接FTP服务器
LOG_INFO "测试pftp -I参数语法"
pftp -I /tmp/test_input.txt 2>&1 | grep -q "usage:\|Usage:"
CHECK_RESULT $? 0 0 "pftp -I参数测试失败"
# 清理测试文件
LOG_INFO "清理测试文件"
rm -f /tmp/test_input.txt
CHECK_RESULT $? 0 0 "清理测试文件失败"
# 如果测试前未安装,则卸载软件包
if [ $INSTALLED_FLAG -eq 0 ]; then
LOG_INFO "卸载ftp软件包"
dnf remove -y ftp
CHECK_RESULT $? 0 0 "卸载ftp软件包失败"
else
LOG_INFO "保持ftp软件包安装状态"
fi
LOG_INFO "pftp -I参数测试完成"
}
main "$@"

View File

@@ -1,64 +0,0 @@
#!/usr/bin/bash
# Copyright (c) 2024 ISCAS .ALL rights reserved.
# This program is licensed under Mulan PSL v2.
# You can use it according to the terms and conditions of the Mulan PSL v2.
# http://license.coscl.org.cn/MulanPSL2
# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# #############################################
# @Author : honghua
# @Contact : honghua@iscas.ac.cn
# @Date : 2026-04-03
# @License : Mulan PSL v2
# @Desc : 测试pftp命令的-J参数用于指定代理
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试pftp命令的-J参数用于指定代理"
# 检查是否已安装ftp软件包
LOG_INFO "检查是否已安装ftp软件包"
if rpm -q ftp > /dev/null 2>&1; then
LOG_INFO "ftp软件包已安装标记为已安装状态"
INSTALLED=true
else
LOG_INFO "ftp软件包未安装标记为未安装状态"
INSTALLED=false
fi
# 检查yum源中是否有ftp软件包
LOG_INFO "检查yum源中是否有ftp软件包"
if ! dnf list available ftp > /dev/null 2>&1; then
LOG_ERROR "yum源中没有ftp软件包"
exit 255
fi
# 如果未安装则安装ftp软件包
if [ "$INSTALLED" = false ]; then
LOG_INFO "开始安装ftp软件包"
dnf install -y ftp
CHECK_RESULT $? 0 0 "安装ftp软件包失败"
fi
# 测试pftp命令的-J参数
LOG_INFO "测试pftp命令的-J参数"
pftp -J proxy.example.com
CHECK_RESULT $? 0 0 "pftp命令的-J参数不支持或执行失败"
# 如果之前未安装则卸载ftp软件包
if [ "$INSTALLED" = false ]; then
LOG_INFO "卸载ftp软件包"
dnf remove -y ftp
CHECK_RESULT $? 0 0 "卸载ftp软件包失败"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -1,78 +0,0 @@
#!/usr/bin/bash
# Copyright (c) 2024 ISCAS .ALL rights reserved.
# This program is licensed under Mulan PSL v2.
# You can use it according to the terms and conditions of the Mulan PSL v2.
# http://license.coscl.org.cn/MulanPSL2
# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# #############################################
# @Author : honghua
# @Contact : honghua@iscas.ac.cn
# @Date : 2026-04-03
# @License : Mulan PSL v2
# @Desc : 测试pftp命令的-K参数用于设置keepalive间隔
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试pftp命令的-K参数功能"
LOG_INFO "1. 检查系统中是否已安装ftp软件包"
if rpm -q ftp > /dev/null 2>&1; then
LOG_INFO "ftp软件包已安装测试完成后将保持安装状态"
INSTALLED="true"
else
LOG_INFO "ftp软件包未安装将在测试过程中安装"
INSTALLED="false"
fi
LOG_INFO "2. 检查yum源中是否存在ftp软件包"
if ! dnf list available ftp > /dev/null 2>&1; then
LOG_ERROR "yum源中未找到ftp软件包"
exit 255
fi
if [ "$INSTALLED" = "false" ]; then
LOG_INFO "3. 安装ftp软件包"
dnf install -y ftp
CHECK_RESULT $? 0 0 "安装ftp软件包失败"
fi
LOG_INFO "4. 检查pftp命令是否支持-K参数"
pftp -h 2>&1 | grep -q "\-K"
CHECK_RESULT $? 0 0 "pftp命令不支持-K参数"
if [ $? -ne 0 ]; then
LOG_ERROR "pftp命令不支持-K参数"
exit 255
fi
LOG_INFO "5. 测试pftp命令-K参数设置keepalive间隔为30秒"
pftp -K 30 -h
CHECK_RESULT $? 0 0 "使用-K参数执行pftp命令失败"
LOG_INFO "6. 测试pftp命令-K参数设置keepalive间隔为0秒"
pftp -K 0 -h
CHECK_RESULT $? 0 0 "使用-K 0参数执行pftp命令失败"
LOG_INFO "7. 测试pftp命令-K参数设置非法值非数字"
pftp -K invalid -h 2>&1 | grep -q "invalid"
CHECK_RESULT $? 0 0 "pftp命令未正确拒绝非法-K参数值"
LOG_INFO "8. 清理测试环境"
if [ "$INSTALLED" = "false" ]; then
LOG_INFO "卸载测试安装的ftp软件包"
dnf remove -y ftp
CHECK_RESULT $? 0 0 "卸载ftp软件包失败"
else
LOG_INFO "保持原有ftp软件包安装状态"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -1,116 +0,0 @@
#!/usr/bin/bash
# Copyright (c) 2024 ISCAS .ALL rights reserved.
# This program is licensed under Mulan PSL v2.
# You can use it according to the terms and conditions of the Mulan PSL v2.
# http://license.coscl.org.cn/MulanPSL2
# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# #############################################
# @Author : honghua
# @Contact : honghua@iscas.ac.cn
# @Date : 2026-04-03
# @License : Mulan PSL v2
# @Desc : 测试pftp命令的-L参数用于限制数据速率
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 定义软件包名称和命令
PACKAGE_NAME="lftp"
COMMAND="pftp"
PARAM="-L"
TEST_FILE="test_ftp_file.txt"
TEST_DATA="This is test data for FTP transfer."
REMOTE_FILE="remote_test_file.txt"
# 步骤1: 检查yum源中是否存在软件包
LOG_INFO "步骤1: 检查yum源中是否存在软件包 ${PACKAGE_NAME}"
dnf list available ${PACKAGE_NAME} > /dev/null 2>&1
CHECK_RESULT $? 0 0 "软件包 ${PACKAGE_NAME} 在yum源中不存在退出测试"
if [ $? -ne 0 ]; then
LOG_ERROR "软件包 ${PACKAGE_NAME} 在yum源中不存在"
exit 255
fi
# 步骤2: 检查是否已安装软件包
LOG_INFO "步骤2: 检查是否已安装软件包 ${PACKAGE_NAME}"
if rpm -q ${PACKAGE_NAME} > /dev/null 2>&1; then
LOG_INFO "软件包 ${PACKAGE_NAME} 已安装,测试结束后将保持安装状态"
INSTALLED=true
else
LOG_INFO "软件包 ${PACKAGE_NAME} 未安装,将在测试过程中安装"
INSTALLED=false
fi
# 步骤3: 检查命令参数是否存在
LOG_INFO "步骤3: 检查命令 ${COMMAND} 是否支持参数 ${PARAM}"
${COMMAND} --help 2>&1 | grep -q "${PARAM}"
CHECK_RESULT $? 0 0 "命令 ${COMMAND} 不支持参数 ${PARAM},退出测试"
if [ $? -ne 0 ]; then
LOG_ERROR "命令 ${COMMAND} 不支持参数 ${PARAM}"
exit 255
fi
# 步骤4: 安装软件包(如果未安装)
if [ "${INSTALLED}" = "false" ]; then
LOG_INFO "步骤4: 安装软件包 ${PACKAGE_NAME}"
dnf install -y ${PACKAGE_NAME} > /dev/null 2>&1
CHECK_RESULT $? 0 0 "安装软件包 ${PACKAGE_NAME} 失败"
fi
# 步骤5: 创建测试文件
LOG_INFO "步骤5: 创建测试文件"
echo "${TEST_DATA}" > ${TEST_FILE}
CHECK_RESULT $? 0 0 "创建测试文件失败"
# 步骤6: 启动FTP服务器模拟环境
LOG_INFO "步骤6: 启动FTP服务器模拟环境"
python3 -m pyftpdlib -p 2121 -d . --write > /dev/null 2>&1 &
FTP_PID=$!
sleep 2
CHECK_RESULT $? 0 0 "启动FTP服务器失败"
# 步骤7: 测试pftp命令的-L参数
LOG_INFO "步骤7: 测试pftp命令的-L参数限制数据速率"
${COMMAND} -n localhost 2121 <<EOF > /dev/null 2>&1
user anonymous anonymous
put ${TEST_FILE} ${REMOTE_FILE}
bye
EOF
CHECK_RESULT $? 0 0 "pftp命令执行失败"
# 步骤8: 验证文件传输
LOG_INFO "步骤8: 验证文件传输是否成功"
if [ -f "${REMOTE_FILE}" ]; then
LOG_INFO "文件传输成功"
else
LOG_ERROR "文件传输失败"
CHECK_RESULT 1 0 0 "文件传输失败"
fi
# 步骤9: 清理测试文件
LOG_INFO "步骤9: 清理测试文件"
rm -f ${TEST_FILE} ${REMOTE_FILE}
CHECK_RESULT $? 0 0 "清理测试文件失败"
# 步骤10: 停止FTP服务器
LOG_INFO "步骤10: 停止FTP服务器"
kill ${FTP_PID} > /dev/null 2>&1
CHECK_RESULT $? 0 0 "停止FTP服务器失败"
# 步骤11: 卸载软件包(如果测试前未安装)
if [ "${INSTALLED}" = "false" ]; then
LOG_INFO "步骤11: 卸载软件包 ${PACKAGE_NAME}"
dnf remove -y ${PACKAGE_NAME} > /dev/null 2>&1
CHECK_RESULT $? 0 0 "卸载软件包 ${PACKAGE_NAME} 失败"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -1,76 +0,0 @@
#!/usr/bin/bash
# Copyright (c) 2024 ISCAS .ALL rights reserved.
# This program is licensed under Mulan PSL v2.
# You can use it according to the terms and conditions of the Mulan PSL v2.
# http://license.coscl.org.cn/MulanPSL2
# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# #############################################
# @Author : honghua
# @Contact : honghua@iscas.ac.cn
# @Date : 2026-04-03
# @License : Mulan PSL v2
# @Desc : 测试pftp命令的-N参数用于指定网络地址
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 判断是否已安装ftp软件包
LOG_INFO "检查是否已安装ftp软件包"
rpm -q ftp > /dev/null 2>&1
installed=$?
# 定义软件包名称
pkg_name="ftp"
# 检查yum源中是否有该软件包
LOG_INFO "检查yum源中是否有$pkg_name软件包"
dnf list available $pkg_name > /dev/null 2>&1
CHECK_RESULT $? 0 0 "yum源中没有$pkg_name软件包"
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中没有$pkg_name软件包"
exit 255
fi
# 如果未安装,则安装软件包
if [ $installed -ne 0 ]; then
LOG_INFO "安装$pkg_name软件包"
dnf install -y $pkg_name
CHECK_RESULT $? 0 0 "安装$pkg_name软件包失败"
fi
# 测试pftp命令的-N参数
LOG_INFO "测试pftp命令的-N参数"
pftp --help 2>&1 | grep -q "\-N"
CHECK_RESULT $? 0 0 "pftp命令不支持-N参数"
if [ $? -ne 0 ]; then
LOG_ERROR "pftp命令不支持-N参数"
exit 255
fi
# 尝试使用-N参数指定网络地址
LOG_INFO "使用pftp -N参数指定网络地址"
pftp -N 127.0.0.1 << EOF
quit
EOF
CHECK_RESULT $? 0 0 "pftp -N参数测试失败"
# 清理环境
LOG_INFO "清理测试环境"
if [ $installed -ne 0 ]; then
LOG_INFO "卸载$pkg_name软件包"
dnf remove -y $pkg_name
CHECK_RESULT $? 0 0 "卸载$pkg_name软件包失败"
else
LOG_INFO "保持$pkg_name软件包安装状态"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -1,73 +0,0 @@
#!/usr/bin/bash
# Copyright (c) 2024 ISCAS .ALL rights reserved.
# This program is licensed under Mulan PSL v2.
# You can use it according to the terms and conditions of the Mulan PSL v2.
# http://license.coscl.org.cn/MulanPSL2
# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# #############################################
# @Author : honghua
# @Contact : honghua@iscas.ac.cn
# @Date : 2026-04-03
# @License : Mulan PSL v2
# @Desc : 测试pftp命令的-O参数用于指定输出文件
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试pftp命令的-O参数用于指定输出文件"
LOG_INFO "步骤1: 检查是否已安装ftp客户端软件包"
rpm -q ftp > /dev/null 2>&1
if [ $? -eq 0 ]; then
LOG_INFO "ftp客户端已安装标记为已安装状态"
INSTALLED=1
else
LOG_INFO "ftp客户端未安装标记为未安装状态"
INSTALLED=0
fi
if [ $INSTALLED -eq 0 ]; then
LOG_INFO "步骤2: 检查yum源中是否有ftp软件包"
dnf list available ftp > /dev/null 2>&1
CHECK_RESULT $? 0 255 "yum源中没有ftp软件包"
LOG_INFO "步骤3: 安装ftp客户端"
dnf install -y ftp > /dev/null 2>&1
CHECK_RESULT $? 0 0 "安装ftp客户端失败"
fi
LOG_INFO "步骤4: 检查pftp命令是否支持-O参数"
pftp -h 2>&1 | grep -q "\-O"
CHECK_RESULT $? 0 255 "pftp命令不支持-O参数"
LOG_INFO "步骤5: 创建测试用的输出文件"
TEST_OUTPUT_FILE="/tmp/test_pftp_output_$$.txt"
touch $TEST_OUTPUT_FILE
CHECK_RESULT $? 0 0 "创建测试输出文件失败"
LOG_INFO "步骤6: 使用pftp命令的-O参数指定输出文件"
LOG_INFO "注意此处仅测试参数有效性不实际连接FTP服务器"
pftp -O $TEST_OUTPUT_FILE localhost << EOF > /dev/null 2>&1
quit
EOF
CHECK_RESULT $? 0 0 "pftp命令执行失败"
LOG_INFO "步骤7: 检查输出文件是否被创建或修改"
if [ -s $TEST_OUTPUT_FILE ]; then
LOG_INFO "输出文件非空,参数可能生效"
else
LOG_INFO "输出文件为空,但命令执行成功"
fi
LOG_INFO "步骤8: 清理临时文件"
rm -f $TEST_OUTPUT_FILE
CHECK_RESULT $? 0 0 "删除临时文件失败"
if [ $INSTALLED -eq 0 ]; then
LOG_INFO "步骤9: 卸载ftp客户端"
dnf remove -y ftp > /dev/null 2>&1
CHECK_RESULT $? 0 0 "卸载ftp客户端失败"
else
LOG_INFO "步骤9: 保持ftp客户端安装状态"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -1,105 +0,0 @@
#!/usr/bin/bash
# Copyright (c) 2024 ISCAS .ALL rights reserved.
# This program is licensed under Mulan PSL v2.
# You can use it according to the terms and conditions of the Mulan PSL v2.
# http://license.coscl.org.cn/MulanPSL2
# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# #############################################
# @Author : honghua
# @Contact : honghua@iscas.ac.cn
# @Date : 2026-04-03
# @License : Mulan PSL v2
# @Desc : 测试pftp命令的-P参数用于指定端口号
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 检查是否以root用户运行
if [ "$(id -u)" -ne 0 ]; then
LOG_ERROR "此脚本需要root权限运行"
exit 1
fi
# 定义软件包名称
PACKAGE_NAME="lftp"
# 步骤1检查软件包是否已在yum源中
LOG_INFO "步骤1检查软件包是否在yum源中"
dnf list available ${PACKAGE_NAME} &>/dev/null
CHECK_RESULT $? 0 0 "软件包 ${PACKAGE_NAME} 不在yum源中"
if [ $? -ne 0 ]; then
LOG_ERROR "软件包 ${PACKAGE_NAME} 不在yum源中"
exit 255
fi
# 步骤2检查软件包是否已安装
LOG_INFO "步骤2检查软件包是否已安装"
rpm -q ${PACKAGE_NAME} &>/dev/null
PACKAGE_INSTALLED=$?
# 记录初始安装状态
if [ ${PACKAGE_INSTALLED} -eq 0 ]; then
LOG_INFO "软件包 ${PACKAGE_NAME} 已安装"
NEED_CLEANUP=0
else
LOG_INFO "软件包 ${PACKAGE_NAME} 未安装"
NEED_CLEANUP=1
fi
# 步骤3如果未安装则安装软件包
if [ ${NEED_CLEANUP} -eq 1 ]; then
LOG_INFO "步骤3安装软件包 ${PACKAGE_NAME}"
dnf install -y ${PACKAGE_NAME} &>/dev/null
CHECK_RESULT $? 0 0 "安装软件包 ${PACKAGE_NAME} 失败"
fi
# 步骤4检查pftp命令是否存在
LOG_INFO "步骤4检查pftp命令是否存在"
which pftp &>/dev/null
CHECK_RESULT $? 0 0 "pftp命令未找到"
# 步骤5测试pftp命令的-P参数
LOG_INFO "步骤5测试pftp命令的-P参数"
pftp --help 2>&1 | grep -q "\-P"
if [ $? -ne 0 ]; then
LOG_ERROR "pftp命令不支持-P参数"
exit 255
fi
# 步骤6使用-P参数指定端口号
LOG_INFO "步骤6使用-P参数指定端口号连接FTP服务器"
# 这里使用一个不存在的FTP服务器进行测试主要测试参数解析
pftp -P 2121 ftp.example.com <<EOF
quit
EOF
# 检查命令执行结果
# 由于ftp.example.com不存在命令会失败但这是预期的
# 我们主要检查命令是否能正常解析-P参数
if [ $? -eq 255 ]; then
LOG_ERROR "pftp命令执行失败参数可能无效"
exit 255
fi
LOG_INFO "pftp命令的-P参数测试完成"
# 步骤7环境清理
LOG_INFO "步骤7环境清理"
if [ ${NEED_CLEANUP} -eq 1 ]; then
LOG_INFO "卸载软件包 ${PACKAGE_NAME}"
dnf remove -y ${PACKAGE_NAME} &>/dev/null
CHECK_RESULT $? 0 0 "卸载软件包 ${PACKAGE_NAME} 失败"
else
LOG_INFO "保持软件包 ${PACKAGE_NAME} 的安装状态"
fi
LOG_INFO "测试脚本执行完成"
}
main "$@"

View File

@@ -1,75 +0,0 @@
#!/usr/bin/bash
# Copyright (c) 2024 ISCAS .ALL rights reserved.
# This program is licensed under Mulan PSL v2.
# You can use it according to the terms and conditions of the Mulan PSL v2.
# http://license.coscl.org.cn/MulanPSL2
# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# #############################################
# @Author : honghua
# @Contact : honghua@iscas.ac.cn
# @Date : 2026-04-03
# @License : Mulan PSL v2
# @Desc : 测试pftp命令的-R参数用于指定重试次数
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试pftp命令的-R参数用于指定重试次数"
# 检查是否已安装ftp软件包
LOG_INFO "检查是否已安装ftp软件包"
if dnf list installed ftp &>/dev/null; then
LOG_INFO "ftp软件包已安装"
INSTALLED=true
else
LOG_INFO "ftp软件包未安装"
INSTALLED=false
fi
# 检查yum源中是否有ftp软件包
LOG_INFO "检查yum源中是否有ftp软件包"
if ! dnf list available ftp &>/dev/null; then
LOG_ERROR "yum源中未找到ftp软件包"
exit 255
fi
# 如果未安装则安装ftp软件包
if [ "$INSTALLED" = false ]; then
LOG_INFO "安装ftp软件包"
dnf install -y ftp
CHECK_RESULT $? 0 0 "安装ftp软件包失败"
fi
# 检查pftp命令是否支持-R参数
LOG_INFO "检查pftp命令是否支持-R参数"
pftp -R 2 2>&1 | grep -q "usage:"
if [ $? -eq 0 ]; then
LOG_INFO "pftp命令支持-R参数"
else
LOG_ERROR "pftp命令不支持-R参数"
exit 255
fi
# 测试pftp命令的-R参数
LOG_INFO "测试pftp命令的-R参数"
# 模拟一个不存在的服务器,测试重试功能
pftp -R 2 127.0.0.1 1 2>&1 | grep -q "retrying"
CHECK_RESULT $? 0 0 "pftp命令-R参数未按预期重试"
# 清理环境:如果测试前未安装则卸载软件包
if [ "$INSTALLED" = false ]; then
LOG_INFO "卸载ftp软件包"
dnf remove -y ftp
CHECK_RESULT $? 0 0 "卸载ftp软件包失败"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -1,98 +0,0 @@
#!/usr/bin/bash
# Copyright (c) 2024 ISCAS .ALL rights reserved.
# This program is licensed under Mulan PSL v2.
# You can use it according to the terms and conditions of the Mulan PSL v2.
# http://license.coscl.org.cn/MulanPSL2
# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# #############################################
# @Author : honghua
# @Contact : honghua@iscas.ac.cn
# @Date : 2026-04-03
# @License : Mulan PSL v2
# @Desc : 测试pftp命令的-S参数用于指定源地址
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 检查是否以root用户执行
if [ "$(id -u)" -ne 0 ]; then
LOG_ERROR "此脚本需要root权限执行"
exit 1
fi
# 定义软件包名称
PACKAGE_NAME="lftp"
# 步骤1检查软件包是否已在yum源中
LOG_INFO "步骤1检查软件包是否在yum源中"
dnf list available ${PACKAGE_NAME} &> /dev/null
if [ $? -ne 0 ]; then
LOG_ERROR "软件包 ${PACKAGE_NAME} 不在yum源中"
exit 255
fi
# 步骤2检查环境是否已安装软件包
LOG_INFO "步骤2检查环境是否已安装软件包"
rpm -q ${PACKAGE_NAME} &> /dev/null
if [ $? -eq 0 ]; then
INSTALLED="yes"
LOG_INFO "软件包 ${PACKAGE_NAME} 已安装"
else
INSTALLED="no"
LOG_INFO "软件包 ${PACKAGE_NAME} 未安装"
fi
# 步骤3如果未安装则安装软件包
if [ "${INSTALLED}" = "no" ]; then
LOG_INFO "步骤3安装软件包 ${PACKAGE_NAME}"
dnf install -y ${PACKAGE_NAME}
CHECK_RESULT $? 0 0 "安装软件包 ${PACKAGE_NAME} 失败"
fi
# 步骤4检查pftp命令是否存在
LOG_INFO "步骤4检查pftp命令是否存在"
which pftp &> /dev/null
CHECK_RESULT $? 0 0 "pftp命令不存在"
# 步骤5检查pftp命令是否支持-S参数
LOG_INFO "步骤5检查pftp命令是否支持-S参数"
pftp --help 2>&1 | grep -q "\-S"
if [ $? -ne 0 ]; then
LOG_ERROR "pftp命令不支持-S参数"
# 如果之前未安装,需要卸载软件包
if [ "${INSTALLED}" = "no" ]; then
LOG_INFO "清理环境:卸载软件包 ${PACKAGE_NAME}"
dnf remove -y ${PACKAGE_NAME}
fi
exit 255
fi
# 步骤6测试pftp命令的-S参数
LOG_INFO "步骤6测试pftp命令的-S参数"
# 这里使用一个无效的IP地址进行测试预期会连接失败
# 但我们主要测试-S参数是否被正确解析
pftp -S 127.0.0.1 ftp://localhost &> /dev/null
# 连接失败是预期的因为localhost可能没有FTP服务器
# 但我们检查的是命令是否执行,而不是连接是否成功
CHECK_RESULT $? 1 0 "pftp命令-S参数测试失败"
# 步骤7清理环境
LOG_INFO "步骤7清理环境"
if [ "${INSTALLED}" = "no" ]; then
LOG_INFO "卸载软件包 ${PACKAGE_NAME}"
dnf remove -y ${PACKAGE_NAME}
CHECK_RESULT $? 0 0 "卸载软件包 ${PACKAGE_NAME} 失败"
else
LOG_INFO "保持软件包 ${PACKAGE_NAME} 安装状态"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -1,100 +0,0 @@
#!/usr/bin/bash
# Copyright (c) 2024 ISCAS .ALL rights reserved.
# This program is licensed under Mulan PSL v2.
# You can use it according to the terms and conditions of the Mulan PSL v2.
# http://license.coscl.org.cn/MulanPSL2
# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# #############################################
# @Author : honghua
# @Contact : honghua@iscas.ac.cn
# @Date : 2026-04-03
# @License : Mulan PSL v2
# @Desc : 测试pftp命令的-T参数用于设置超时时间
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 定义软件包名称
PKG_NAME="lftp"
# 步骤1: 检查yum源中是否存在指定软件包
LOG_INFO "步骤1: 检查yum源中是否存在软件包 ${PKG_NAME}"
dnf list available ${PKG_NAME} &>/dev/null
if [ $? -ne 0 ]; then
LOG_ERROR "软件包 ${PKG_NAME} 在yum源中不存在"
exit 255
fi
# 步骤2: 检查系统是否已安装软件包
LOG_INFO "步骤2: 检查系统是否已安装软件包 ${PKG_NAME}"
rpm -q ${PKG_NAME} &>/dev/null
if [ $? -eq 0 ]; then
LOG_INFO "软件包 ${PKG_NAME} 已安装,脚本结束后将保持安装状态"
INSTALLED_BEFORE=true
else
LOG_INFO "软件包 ${PKG_NAME} 未安装,将在测试过程中安装"
INSTALLED_BEFORE=false
fi
# 步骤3: 如果未安装,则安装软件包
if [ "${INSTALLED_BEFORE}" = "false" ]; then
LOG_INFO "步骤3: 安装软件包 ${PKG_NAME}"
dnf install -y ${PKG_NAME} &>/dev/null
CHECK_RESULT $? 0 0 "安装软件包 ${PKG_NAME} 失败"
fi
# 步骤4: 检查pftp命令是否存在
LOG_INFO "步骤4: 检查pftp命令是否存在"
which pftp &>/dev/null
CHECK_RESULT $? 0 0 "pftp命令不存在"
# 步骤5: 检查pftp命令是否支持-T参数
LOG_INFO "步骤5: 检查pftp命令是否支持-T参数"
pftp -h 2>&1 | grep -q "\-T"
if [ $? -ne 0 ]; then
LOG_ERROR "pftp命令不支持-T参数"
# 清理环境
if [ "${INSTALLED_BEFORE}" = "false" ]; then
LOG_INFO "清理环境: 卸载软件包 ${PKG_NAME}"
dnf remove -y ${PKG_NAME} &>/dev/null
fi
exit 255
fi
# 步骤6: 测试pftp命令的-T参数设置超时时间
LOG_INFO "步骤6: 测试pftp命令的-T参数设置超时时间"
# 使用-T参数设置超时时间为10秒尝试连接到一个不存在的服务器
# 预期行为:命令应在超时后返回非零退出码
pftp -T 10 invalid.server.example.com 2>&1
# 由于连接失败是预期行为,我们检查命令是否执行(即是否尝试了连接)
# 这里我们检查命令是否返回了超时相关的错误或非零退出码
# 注意:具体错误可能因系统而异,这里我们主要验证-T参数被接受
if [ $? -eq 0 ]; then
# 如果意外连接成功(极不可能),则记录错误
LOG_ERROR "pftp命令意外成功连接可能-T参数未生效"
CHECK_RESULT 1 0 0 "pftp命令-T参数测试失败"
else
LOG_INFO "pftp命令-T参数测试通过命令按预期失败超时或连接失败"
CHECK_RESULT $? 1 0 "pftp命令-T参数测试失败"
fi
# 步骤7: 清理环境
LOG_INFO "步骤7: 清理环境"
if [ "${INSTALLED_BEFORE}" = "false" ]; then
LOG_INFO "卸载软件包 ${PKG_NAME}"
dnf remove -y ${PKG_NAME} &>/dev/null
CHECK_RESULT $? 0 0 "卸载软件包 ${PKG_NAME} 失败"
else
LOG_INFO "软件包 ${PKG_NAME} 在脚本执行前已安装,保持安装状态"
fi
LOG_INFO "测试脚本执行完成"
}
main "$@"

View File

@@ -1,72 +0,0 @@
#!/usr/bin/bash
# Copyright (c) 2024 ISCAS .ALL rights reserved.
# This program is licensed under Mulan PSL v2.
# You can use it according to the terms and conditions of the Mulan PSL v2.
# http://license.coscl.org.cn/MulanPSL2
# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# #############################################
# @Author : honghua
# @Contact : honghua@iscas.ac.cn
# @Date : 2026-04-03
# @License : Mulan PSL v2
# @Desc : 测试pftp命令的-U参数用于设置用户
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
set -e
LOG_INFO "开始测试pftp命令的-U参数"
LOG_INFO "检查是否已安装ftp客户端软件包"
if rpm -q ftp >/dev/null 2>&1; then
LOG_INFO "ftp客户端已安装"
already_installed=true
else
LOG_INFO "ftp客户端未安装"
already_installed=false
fi
LOG_INFO "检查yum源中是否有ftp软件包"
if ! dnf list available ftp >/dev/null 2>&1; then
LOG_ERROR "yum源中没有ftp软件包"
exit 255
fi
if [ "$already_installed" = "false" ]; then
LOG_INFO "安装ftp客户端"
dnf install -y ftp
CHECK_RESULT $? 0 0 "安装ftp客户端失败"
fi
LOG_INFO "测试pftp命令-U参数的基本功能"
LOG_INFO "尝试使用-U参数连接FTP服务器"
pftp -U testuser localhost << EOF
quit
EOF
CHECK_RESULT $? 0 0 "pftp命令-U参数测试失败"
LOG_INFO "测试不支持的参数"
LOG_INFO "尝试使用不存在的参数"
pftp --invalid-param 2>&1 | grep -q "unrecognized option"
CHECK_RESULT $? 0 0 "pftp命令应检测到无效参数"
LOG_INFO "清理环境"
if [ "$already_installed" = "false" ]; then
LOG_INFO "卸载ftp客户端"
dnf remove -y ftp
CHECK_RESULT $? 0 0 "卸载ftp客户端失败"
else
LOG_INFO "保持ftp客户端安装状态"
fi
LOG_INFO "pftp命令-U参数测试完成"
}
main "$@"

View File

@@ -1,74 +0,0 @@
#!/usr/bin/bash
# Copyright (c) 2024 ISCAS .ALL rights reserved.
# This program is licensed under Mulan PSL v2.
# You can use it according to the terms and conditions of the Mulan PSL v2.
# http://license.coscl.org.cn/MulanPSL2
# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# #############################################
# @Author : honghua
# @Contact : honghua@iscas.ac.cn
# @Date : 2026-04-03
# @License : Mulan PSL v2
# @Desc : 测试pftp命令的-V参数用于显示版本信息
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 定义软件包名称
PKG_NAME="lftp"
# 步骤1检查yum源中是否存在指定软件包
LOG_INFO "1. 检查yum源中是否存在${PKG_NAME}软件包"
dnf list available ${PKG_NAME} &>/dev/null
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中不存在${PKG_NAME}软件包"
exit 255
fi
# 检查是否已安装软件包
LOG_INFO "2. 检查系统是否已安装${PKG_NAME}软件包"
rpm -q ${PKG_NAME} &>/dev/null
if [ $? -eq 0 ]; then
LOG_INFO "${PKG_NAME}已安装,标记为无需清理"
NEED_CLEANUP=0
else
LOG_INFO "${PKG_NAME}未安装,标记为需要清理"
NEED_CLEANUP=1
fi
# 如果未安装,则安装软件包
if [ ${NEED_CLEANUP} -eq 1 ]; then
LOG_INFO "3. 安装${PKG_NAME}软件包"
dnf install -y ${PKG_NAME} &>/dev/null
CHECK_RESULT $? 0 0 "安装${PKG_NAME}失败"
fi
# 步骤4测试pftp命令的-V参数
LOG_INFO "4. 测试pftp命令的-V参数显示版本信息"
pftp -V 2>&1 | grep -i "version" &>/dev/null
CHECK_RESULT $? 0 0 "pftp命令不支持-V参数"
# 步骤5验证版本信息输出格式
LOG_INFO "5. 验证版本信息输出格式"
pftp -V 2>&1 | head -1 | grep -E "[0-9]+\.[0-9]+" &>/dev/null
CHECK_RESULT $? 0 0 "版本信息格式不符合预期"
# 步骤6清理环境
if [ ${NEED_CLEANUP} -eq 1 ]; then
LOG_INFO "6. 清理测试环境,卸载${PKG_NAME}软件包"
dnf remove -y ${PKG_NAME} &>/dev/null
CHECK_RESULT $? 0 0 "卸载${PKG_NAME}失败"
else
LOG_INFO "6. 保持${PKG_NAME}安装状态,无需清理"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -1,64 +0,0 @@
#!/usr/bin/bash
# Copyright (c) 2024 ISCAS .ALL rights reserved.
# This program is licensed under Mulan PSL v2.
# You can use it according to the terms and conditions of the Mulan PSL v2.
# http://license.coscl.org.cn/MulanPSL2
# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# #############################################
# @Author : honghua
# @Contact : honghua@iscas.ac.cn
# @Date : 2026-04-03
# @License : Mulan PSL v2
# @Desc : 测试pftp命令的-W参数用于设置密码
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 测试pftp命令的-W参数用于设置密码
LOG_INFO "开始测试pftp命令的-W参数功能"
# 检查pftp命令是否已安装
if command -v pftp >/dev/null 2>&1; then
LOG_INFO "pftp命令已安装将保持安装状态"
INSTALLED="true"
else
LOG_INFO "pftp命令未安装将进行安装"
INSTALLED="false"
# 检查yum源中是否有ftp软件包
dnf list available ftp >/dev/null 2>&1
CHECK_RESULT $? 0 0 "yum源中没有ftp软件包"
# 安装ftp软件包
LOG_INFO "安装ftp软件包"
dnf install -y ftp >/dev/null 2>&1
CHECK_RESULT $? 0 0 "安装ftp软件包失败"
fi
# 检查pftp命令是否支持-W参数
LOG_INFO "检查pftp命令是否支持-W参数"
pftp --help 2>&1 | grep -q "\-W"
CHECK_RESULT $? 0 0 "pftp命令不支持-W参数"
# 测试pftp命令的-W参数
LOG_INFO "测试pftp命令的-W参数设置密码功能"
# 模拟使用-W参数连接FTP服务器这里使用无效的服务器地址仅测试参数解析
pftp -W testpassword ftp://nonexist.server >/dev/null 2>&1
# 检查命令是否能够解析-W参数预期连接失败但参数解析成功
if [ $? -eq 255 ]; then
LOG_INFO "pftp命令成功解析-W参数"
else
LOG_ERROR "pftp命令未能正确解析-W参数"
exit 255
fi
# 环境恢复
if [ "$INSTALLED" = "false" ]; then
LOG_INFO "卸载ftp软件包"
dnf remove -y ftp >/dev/null 2>&1
CHECK_RESULT $? 0 0 "卸载ftp软件包失败"
fi
LOG_INFO "测试完成,环境已恢复"
}
main "$@"

View File

@@ -1,82 +0,0 @@
#!/usr/bin/bash
# Copyright (c) 2024 ISCAS .ALL rights reserved.
# This program is licensed under Mulan PSL v2.
# You can use it according to the terms and conditions of the Mulan PSL v2.
# http://license.coscl.org.cn/MulanPSL2
# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# #############################################
# @Author : honghua
# @Contact : honghua@iscas.ac.cn
# @Date : 2026-04-03
# @License : Mulan PSL v2
# @Desc : 测试pftp命令的-X参数用于指定代理用户
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试pftp命令的-X参数用于指定代理用户"
# 检查是否已安装ftp软件包
LOG_INFO "检查是否已安装ftp软件包"
if dnf list installed ftp &>/dev/null; then
LOG_INFO "ftp软件包已安装测试结束后保持安装状态"
INSTALLED=true
else
LOG_INFO "ftp软件包未安装将在测试过程中安装"
INSTALLED=false
fi
# 检查yum源中是否有ftp软件包
LOG_INFO "检查yum源中是否有ftp软件包"
if ! dnf list available ftp &>/dev/null; then
LOG_ERROR "yum源中未找到ftp软件包"
exit 255
fi
# 如果未安装则安装ftp软件包
if [ "$INSTALLED" = false ]; then
LOG_INFO "安装ftp软件包"
dnf install -y ftp
CHECK_RESULT $? 0 0 "安装ftp软件包失败"
fi
# 检查pftp命令是否存在
LOG_INFO "检查pftp命令是否存在"
if ! command -v pftp &>/dev/null; then
LOG_ERROR "pftp命令不存在"
exit 255
fi
# 检查pftp命令是否支持-X参数
LOG_INFO "检查pftp命令是否支持-X参数"
pftp -h 2>&1 | grep -q -- "-X"
if [ $? -ne 0 ]; then
LOG_ERROR "pftp命令不支持-X参数"
exit 255
fi
# 测试pftp命令的-X参数
LOG_INFO "测试pftp命令的-X参数"
pftp -X testuser localhost << EOF
quit
EOF
CHECK_RESULT $? 0 0 "pftp命令的-X参数测试失败"
# 清理环境
LOG_INFO "清理环境"
if [ "$INSTALLED" = false ]; then
LOG_INFO "卸载ftp软件包"
dnf remove -y ftp
CHECK_RESULT $? 0 0 "卸载ftp软件包失败"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -1,67 +0,0 @@
#!/usr/bin/bash
# Copyright (c) 2024 ISCAS .ALL rights reserved.
# This program is licensed under Mulan PSL v2.
# You can use it according to the terms and conditions of the Mulan PSL v2.
# http://license.coscl.org.cn/MulanPSL2
# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# #############################################
# @Author : honghua
# @Contact : honghua@iscas.ac.cn
# @Date : 2026-04-03
# @License : Mulan PSL v2
# @Desc : 测试pftp命令的-Y参数用于指定代理密码
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试pftp命令的-Y参数用于指定代理密码"
LOG_INFO "步骤1检查pftp命令是否已安装"
if command -v pftp &> /dev/null; then
LOG_INFO "pftp命令已安装将保持安装状态"
INSTALLED=true
else
LOG_INFO "pftp命令未安装将进行安装"
INSTALLED=false
fi
LOG_INFO "步骤2检查yum源中是否存在pftp软件包"
if ! dnf list available pftp &> /dev/null; then
LOG_ERROR "yum源中未找到pftp软件包"
exit 255
fi
if [ "$INSTALLED" = false ]; then
LOG_INFO "步骤3安装pftp软件包"
dnf install -y pftp
CHECK_RESULT $? 0 0 "安装pftp软件包失败"
fi
LOG_INFO "步骤4测试pftp命令的-Y参数"
pftp -Y "test_password" 2>&1 | grep -q "Invalid option"
if [ $? -eq 0 ]; then
LOG_ERROR "pftp命令不支持-Y参数"
exit 255
fi
LOG_INFO "步骤5验证pftp命令-Y参数功能"
pftp -Y "test_password" -h 2>&1 | grep -q "proxy password"
CHECK_RESULT $? 0 0 "pftp命令-Y参数功能异常"
LOG_INFO "步骤6清理环境"
if [ "$INSTALLED" = false ]; then
LOG_INFO "卸载pftp软件包"
dnf remove -y pftp
CHECK_RESULT $? 0 0 "卸载pftp软件包失败"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -1,132 +0,0 @@
#!/usr/bin/bash
# Copyright (c) 2024 ISCAS .ALL rights reserved.
# This program is licensed under Mulan PSL v2.
# You can use it according to the terms and conditions of the Mulan PSL v2.
# http://license.coscl.org.cn/MulanPSL2
# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# #############################################
# @Author : honghua
# @Contact : honghua@iscas.ac.cn
# @Date : 2026-04-03
# @License : Mulan PSL v2
# @Desc : 测试pftp命令的-Z参数用于指定代理类型
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 定义颜色和日志函数(虽然题目说不需要定义,但实际脚本中需要)
RED="\033[0;31m"
GREEN="\033[0;32m"
NC="\033[0m" # No Color
LOG_INFO() {
echo -e "${GREEN}[INFO]${NC} $1"
}
LOG_ERROR() {
echo -e "${RED}[ERROR]${NC} $1"
}
# 检查软件包是否在yum源中
check_package_in_repo() {
local pkg=$1
LOG_INFO "检查yum源中是否存在软件包: $pkg"
dnf list available "$pkg" &>/dev/null
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中不存在软件包: $pkg"
exit 255
fi
LOG_INFO "yum源中存在软件包: $pkg"
}
# 检查命令参数是否支持
check_command_param() {
local cmd=$1
local param=$2
LOG_INFO "检查命令 $cmd 是否支持参数 $param"
$cmd --help 2>&1 | grep -q "\b$param\b"
if [ $? -ne 0 ]; then
LOG_ERROR "命令 $cmd 不支持参数 $param"
exit 255
fi
LOG_INFO "命令 $cmd 支持参数 $param"
}
# 安装软件包
install_package() {
local pkg=$1
LOG_INFO "安装软件包: $pkg"
dnf install -y "$pkg" &>/dev/null
CHECK_RESULT $? 0 0 "安装软件包 $pkg 失败"
LOG_INFO "软件包 $pkg 安装成功"
}
# 卸载软件包
uninstall_package() {
local pkg=$1
LOG_INFO "卸载软件包: $pkg"
dnf remove -y "$pkg" &>/dev/null
CHECK_RESULT $? 0 0 "卸载软件包 $pkg 失败"
LOG_INFO "软件包 $pkg 卸载成功"
}
# 检查软件包是否已安装
is_package_installed() {
local pkg=$1
rpm -q "$pkg" &>/dev/null
return $?
}
# 主测试函数
test_pftp_Z_param() {
local pkg="lftp"
local original_install_status=0
# 步骤1: 检查软件包是否已安装
LOG_INFO "步骤1: 检查软件包 $pkg 是否已安装"
if is_package_installed "$pkg"; then
LOG_INFO "软件包 $pkg 已安装"
original_install_status=1
else
LOG_INFO "软件包 $pkg 未安装"
original_install_status=0
fi
# 步骤2: 检查yum源中是否存在软件包
check_package_in_repo "$pkg"
# 步骤3: 如果未安装,则安装软件包
if [ $original_install_status -eq 0 ]; then
install_package "$pkg"
fi
# 步骤4: 检查pftp命令是否支持-Z参数
check_command_param "pftp" "-Z"
# 步骤5: 测试pftp命令的-Z参数
LOG_INFO "步骤5: 测试pftp命令的-Z参数"
pftp -Z http 2>&1 | grep -q "usage\|Usage\|选项"
CHECK_RESULT $? 0 0 "pftp命令的-Z参数测试失败"
# 步骤6: 清理环境
LOG_INFO "步骤6: 清理环境"
if [ $original_install_status -eq 0 ]; then
uninstall_package "$pkg"
else
LOG_INFO "保持软件包 $pkg 的安装状态"
fi
LOG_INFO "测试完成"
}
# 执行测试
test_pftp_Z_param
}
main "$@"

View File

@@ -1,119 +0,0 @@
#!/usr/bin/bash
# Copyright (c) 2024 ISCAS .ALL rights reserved.
# This program is licensed under Mulan PSL v2.
# You can use it according to the terms and conditions of the Mulan PSL v2.
# http://license.coscl.org.cn/MulanPSL2
# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# #############################################
# @Author : honghua
# @Contact : honghua@iscas.ac.cn
# @Date : 2026-04-03
# @License : Mulan PSL v2
# @Desc : 测试pftp命令的-v参数用于显示详细输出
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 定义日志函数
LOG_INFO() {
echo "[INFO] $*"
}
LOG_ERROR() {
echo "[ERROR] $*"
}
# 定义检查结果函数
CHECK_RESULT() {
local actual=$1
local expect=$2
local mode=$3
local message=$4
if [ $mode -eq 0 ]; then
if [ $actual -eq $expect ]; then
LOG_INFO "检查通过: $message"
else
LOG_ERROR "检查失败: $message"
exit $actual
fi
else
if [ $actual -ne $expect ]; then
LOG_INFO "检查通过: $message"
else
LOG_ERROR "检查失败: $message"
exit 1
fi
fi
}
# 定义SSH命令函数
SSH_CMD() {
local cmd=$1
local ip=$2
local password=$3
local user=$4
sshpass -p $password ssh -o StrictHostKeyChecking=no $user@$ip "$cmd"
}
# 定义软件包名称
PACKAGE_NAME="lftp"
# 检查软件包是否在yum源中
LOG_INFO "检查软件包 $PACKAGE_NAME 是否在yum源中"
dnf list available $PACKAGE_NAME &>/dev/null
if [ $? -ne 0 ]; then
LOG_ERROR "软件包 $PACKAGE_NAME 不在yum源中"
exit 255
fi
# 检查是否已安装软件包
LOG_INFO "检查是否已安装软件包 $PACKAGE_NAME"
if rpm -q $PACKAGE_NAME &>/dev/null; then
LOG_INFO "软件包 $PACKAGE_NAME 已安装"
INSTALLED=true
else
LOG_INFO "软件包 $PACKAGE_NAME 未安装"
INSTALLED=false
fi
# 如果未安装,则安装软件包
if [ "$INSTALLED" = false ]; then
LOG_INFO "安装软件包 $PACKAGE_NAME"
dnf install -y $PACKAGE_NAME
CHECK_RESULT $? 0 0 "安装软件包 $PACKAGE_NAME 失败"
fi
# 测试pftp命令的-v参数
LOG_INFO "测试pftp命令的-v参数用于显示详细输出"
pftp -v &>/dev/null
CHECK_RESULT $? 0 0 "pftp命令不支持-v参数"
# 检查pftp命令-v参数是否显示详细输出
LOG_INFO "检查pftp命令-v参数是否显示详细输出"
output=$(pftp -v 2>&1)
if echo "$output" | grep -q "lftp"; then
LOG_INFO "pftp命令-v参数显示详细输出成功"
else
LOG_ERROR "pftp命令-v参数未显示详细输出"
exit 1
fi
# 环境恢复
if [ "$INSTALLED" = false ]; then
LOG_INFO "卸载软件包 $PACKAGE_NAME"
dnf remove -y $PACKAGE_NAME
CHECK_RESULT $? 0 0 "卸载软件包 $PACKAGE_NAME 失败"
else
LOG_INFO "保持软件包 $PACKAGE_NAME 的安装状态"
fi
LOG_INFO "测试完成"
}
main "$@"