使用Python构建 CLI 以检查 URL 的状态
在本文中,我们将构建一个 CLI(命令行界面)程序来使用Python验证 URL 的状态。 Python CLI 将一个或多个 URL 作为参数并检查该 URL 是否可访问(或不可访问)。
分步实施
步骤 1:设置文件和安装要求
首先,创建一个名为“urlcheck”的目录,并在“urlcheck.py”目录下新建一个文件(目录和Python文件可以使用任何名称)。
mkdir urlcheck && cd urlcheck
touch urlcheck.py
安装Python请求和验证器库:
pip3 install requests validators
现在创建一个基础Python文件,导入所有必需的库
Python3
import sys
import requests
from http.client import responses
import validators
if len(sys.argv) < 2:
print('You need to specify atleast one URL')
sys.exit()
def main():
# main function
if __name__ == "__main__":
main()
Python3
def usage():
print("\nUsage:\nSingle URL: urlcheck \
nMultiple URL's: urlcheck ... \n")
if sys.argv[1]=="help":
usage()
sys.exit()
Python3
def main():
n = len(sys.argv)
for i in range(1, n):
url = sys.argv[i]
if validators.url(url) is True:
status = requests.head(url).status_code
try:
print(url, status, responses[status], "\n")
except:
print(url, status, "Not an Standard HTTP Response code\n")
else:
print(url, "Not an valid URL\n")
continue
Python3
import sys
import requests
from http.client import responses
import validators
if len(sys.argv) < 2:
print('You need to specify at least url')
sys.exit()
def usage():
print("\nUsage:\nSingle URL: urlcheck \nMultiple\
URL's: urlcheck ... \n")
if sys.argv[1]=="help":
usage()
sys.exit()
def main():
n = len(sys.argv)
print("\n")
for i in range(1, n):
url = sys.argv[i]
if validators.url(url) is True:
status = requests.head(url).status_code
try:
print(url, status,responses[status], "\n")
except:
print(url, status, "Not an Standard HTTP Response code\n")
else:
print(url, "Not an valid URL\n")
continue
if __name__ == "__main__":
main()
输出:
在上面的代码中,sys 库提供了用于操作Python运行时环境不同部分的函数和变量。它用于通过使用 argv 模块将参数作为输入,requests 库有助于建立 HTTP 连接, Python HTTP 客户端库中的响应模块提供了对 HTTP 响应代码的简短描述,validators 库用于验证 URL
如果条件验证用户至少传递了一个参数,如果条件失败,程序将退出并显示错误,指出用户需要指定至少一个 URL
第二步:创建帮助函数
帮助函数显示可用的命令并充当命令的文档。当帮助作为参数传递时运行
蟒蛇3
def usage():
print("\nUsage:\nSingle URL: urlcheck \
nMultiple URL's: urlcheck ... \n")
if sys.argv[1]=="help":
usage()
sys.exit()
输出:
第 3 步:创建主函数
main函数是脚本开始执行时运行的函数,main函数包含我们 CLI 程序的所有逻辑。
蟒蛇3
def main():
n = len(sys.argv)
for i in range(1, n):
url = sys.argv[i]
if validators.url(url) is True:
status = requests.head(url).status_code
try:
print(url, status, responses[status], "\n")
except:
print(url, status, "Not an Standard HTTP Response code\n")
else:
print(url, "Not an valid URL\n")
continue
输出:
在上面的代码中,变量“n”用于获取用户指定的参数数量。 for 循环一次运行一个参数并循环,直到所有参数都被传递。“URL”一次存储一个给定的参数,并在它是一个有效的 URL 时进行验证。它不是有效的 URL,else 块会打印警告并继续下一次迭代。如果它是有效的 URL,则请求库使用 HEAD 方法建立 HTTP 连接。 HEAD 方法类似于 GET 但在其响应中不包含任何 HTML,然后我们将响应的状态代码存储在“status”变量中
最后,我们尝试打印出 URL、它的响应状态码以及状态码的简短描述。如果状态码不是标准的 HTTP 响应状态码(CDN 使用自定义状态码),它会打印出 Not a Standard HTTP Response code。
步骤 4:创建自定义 CLI 命令
有多种方法可以创建自定义 CLI 命令,但我们将使用别名,因为它易于创建并且不需要对文件权限(或)更改目录进行任何更改。
对于 Windows:
您需要编辑文件 /C/'Program Files'/Git/etc/profile.d/aliases.sh 并为您的Python脚本添加位置
alias urlcheck="location to your python file"
对于 Mac 和 Linux:
你需要编辑 ~/.profile add location 到你的Python脚本
alias urlcheck="python3 ~/urlcheck/urlcheck.py"
保存 .profile 后运行以下命令以确保别名获得更新
source ~/.profile
下面是完整的实现:
蟒蛇3
import sys
import requests
from http.client import responses
import validators
if len(sys.argv) < 2:
print('You need to specify at least url')
sys.exit()
def usage():
print("\nUsage:\nSingle URL: urlcheck \nMultiple\
URL's: urlcheck ... \n")
if sys.argv[1]=="help":
usage()
sys.exit()
def main():
n = len(sys.argv)
print("\n")
for i in range(1, n):
url = sys.argv[i]
if validators.url(url) is True:
status = requests.head(url).status_code
try:
print(url, status,responses[status], "\n")
except:
print(url, status, "Not an Standard HTTP Response code\n")
else:
print(url, "Not an valid URL\n")
continue
if __name__ == "__main__":
main()
输出: