练习_test3

1、搭建vsftpd服务,满足下面要求:

1)虚拟用户账号可登陆,虚拟用户为ftpuser1、ftpuser2,密码自定

2)虚拟用户lftp访问的家目录为/ftphome/$USER

3)ftpuser1用户允许上传,最大上传速率为102400K,上传文件默认权限为644

4)ftpuser2不允许上传,但可创建目录,设定最大连接数为2.

将主配置文件的匿名用户上传与创建目录注释掉

vim /etc/vsftpd/loginusers

ftpuser1

123

ftpuser2

123

mkdir /etc/vsftpd/loginusers

##给loginusers文件加密

db_load -T -t hash -f /etc/vsftpd/loginusers loginusers.db

 

vim /etc/pam.d/ckvsftpd

account required pam_userdb.so db=/etc/vsftpd/loginusers

auth required pam_userdb.so db=/etc/vsftpd/loginusers

 

vim /etc/vsftpd/vsftpd.conf

pam_service_name=ckvsftpd

guest_enable=YES

 

mkdir /ftphome

chgrp ftp /ftphome

chmod g+s /ftphome

mkdir /ftphome/ftpuser{1,2}

 

vim /etc/vsftpd/vsftpd.conf

local_root=/ftpuserhome/$USER

user_sub_token=$USER

 

mkdir -p /etc/vsftpd/userconf

mkdir /ftphome/ftpuser1/pubuser1

chmod 775 /ftphome/ftpuser1/pubuser1

chgrp ftp /ftphome/ftpuser1/pubuser1

mkdir /ftphome/ftpuser2/pubuser2

chmod 775 /ftphome/ftpuser2/pubuser2

chgrp ftp /ftphome/ftpuser2/pubuser2

systemctl restart vsftpd.service

 

vim /etc/vsftpd/userconf/ftpuser1

anon_upload_enable

anon_max_rate=102400

anon_umask=022

 

vim /etc/vsftpd/userconf/ftpuser2

anon_mkdir_write_enable=YES

max_clients=2

systemctl restart vsftpd.service

测试:

lftp 172.25.254.206 -u ftpuser1

lftp 172.25.254.206 -u ftpuser2

 

530错误:帐号和密码不匹配

500错误:权限太大或配置文件 有错误

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 使用等价类划分法完成的测试用例表Login_TestCases如下: | 测试用例编号 | 测试数据 | 预期结果 | | ------------ | -------- | -------- | | 1 | 用户名为空,密码为空 | 显示提示信息“Please enter your username and password.” | | 2 | 用户名为空,密码为mercury | 显示提示信息“Please enter your username.” | | 3 | 用户名为a,密码为空 | 显示提示信息“Please enter your password.” | | 4 | 用户名为abcd,密码为mercury | 登录成功 | | 5 | 用户名为abc,密码为mercury | 显示提示信息“Your password is invalid.” | | 6 | 用户名为abcde,密码为mercury | 显示提示信息“Your username is invalid.” | | 7 | 用户名为abcdefg,密码为hijklmn | 显示提示信息“Your username and password are invalid.” | 2. 对用户登录过程进行脚本录制,回放无误后,保存测试脚本为login_Test1。 3. 打开脚本login_Test1,编辑脚本,使用测试用例表Login_TestCases,完成对Flight程序登录模块的测试,运行测试无误后保存测试脚本为login_Test2。 ```python # -*- coding: utf-8 -*- from selenium import webdriver import unittest import csv class FlightLogin(unittest.TestCase): def setUp(self): self.driver = webdriver.Chrome() self.driver.implicitly_wait(30) self.base_url = "http://newtours.demoaut.com/" self.verificationErrors = [] self.accept_next_alert = True def test_flight_login(self): driver = self.driver driver.get(self.base_url + "/mercurywelcome.php") # 打开CSV文件 with open('Login_TestCases.csv', newline='') as csvfile: reader = csv.reader(csvfile) next(reader, None) # 跳过第一行标题 # 读取每一行测试数据,并执行测试 for row in reader: username = row[1] password = row[2] expected_result = row[3] driver.find_element_by_name("userName").clear() driver.find_element_by_name("userName").send_keys(username) driver.find_element_by_name("password").clear() driver.find_element_by_name("password").send_keys(password) driver.find_element_by_name("login").click() # 判断是否登录成功 if expected_result == "Login Successful": try: self.assertEqual("Find a Flight: Mercury Tours:", driver.title) except AssertionError as e: self.verificationErrors.append(str(e)) # 判断是否出现错误提示 else: try: self.assertEqual(expected_result, driver.find_element_by_css_selector("font > b").text) except AssertionError as e: self.verificationErrors.append(str(e)) def tearDown(self): self.driver.quit() self.assertEqual([], self.verificationErrors) if __name__ == "__main__": unittest.main() ``` 4. 添加事务,查看并记录用户订票所用的时间。 ```python # -*- coding: utf-8 -*- from selenium import webdriver import unittest import csv class FlightLogin(unittest.TestCase): def setUp(self): self.driver = webdriver.Chrome() self.driver.implicitly_wait(30) self.base_url = "http://newtours.demoaut.com/" self.verificationErrors = [] self.accept_next_alert = True def test_flight_login(self): driver = self.driver driver.get(self.base_url + "/mercurywelcome.php") # 打开CSV文件 with open('Login_TestCases.csv', newline='') as csvfile: reader = csv.reader(csvfile) next(reader, None) # 跳过第一行标题 # 读取每一行测试数据,并执行测试 for row in reader: username = row[1] password = row[2] expected_result = row[3] driver.find_element_by_name("userName").clear() driver.find_element_by_name("userName").send_keys(username) driver.find_element_by_name("password").clear() driver.find_element_by_name("password").send_keys(password) start_time = time.time() # 记录测试开始时间 driver.find_element_by_name("login").click() # 判断是否登录成功 if expected_result == "Login Successful": try: self.assertEqual("Find a Flight: Mercury Tours:", driver.title) except AssertionError as e: self.verificationErrors.append(str(e)) # 判断是否出现错误提示 else: try: self.assertEqual(expected_result, driver.find_element_by_css_selector("font > b").text) except AssertionError as e: self.verificationErrors.append(str(e)) end_time = time.time() # 记录测试结束时间 print("User %s login time: %f seconds" % (username, end_time - start_time)) def tearDown(self): self.driver.quit() self.assertEqual([], self.verificationErrors) if __name__ == "__main__": unittest.main() ``` 5. 练习其他的操作,比如添加对象等。可以根据实际需要添加对象,比如预订机票、查询航班信息等。可以使用Page Object模式对页面进行封装,方便维护和重用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值