curl
curl介绍
curl(client url)是一个强大且开源的数据传输工具,它支持通过URL上传或下载数据,适合用来执行上传或下载文件、执行API请求、提交表单数据等任务,curl支持以下协议:DICT、FILE、FTP、FTPS、GOPHER、GOPHERS、HTTP、HTTPS、IMAP、IMAPS、LDAPS、MQTT、POP3、POP3S、RTMP、RTMPS、RTSP、SCP、SFTP、SMB、SMBS、SMTP、SMTPS、TELNET、TFTP、WS、WSS。
curl命令
默认情况下,curl会将接收到的数据(如:html文件、json文件)写到stdout,即直接打印在屏幕上
如果curl接收到的数据被-o选项或重定向符输出到stdout以外的地方,则curl默认会显示一个进度表,进度表会显示传输数据量、传输速度和估计剩余时间
-#或--progress-bar 显示一个进度条,使用进度条替换进度表
-s 静默模式(silent),不显示进度和错误信息,但仍会显示HTTP响应的内容,如返回的html、json等数据
-q 完全安静模式(quiet),完全阻止所有输出,包括进度信息、错误信息、返回的响应信息
--retry 值:设置重试次数,该值默认为0,curl默认只会在响应超时、FTP返回4xx或HTTP返回408、429、500、502、503或504时进行重试,该选项可以搭配以下选项:
- --retry-all -errors:出现任何错误时均重试,包括HTTP 404等情况
- --retry-delay 值:每一次重试前的延迟时间,单位为秒
- --retry-max-time 值:最大总重试时间,单位为秒,到达该时间后,即使还有剩余重试次数,也停止重试
如果URL中不指定协议,curl会尝试解析主机名,如果主机名不包含任何协议,则默认使用http
-o /路径/文件名:将接收到的数据以新文件名保存到指定位置,文件不存在则会新建,文件存在则会覆盖
-O 将接收到的数据在当前路径下以原文件名保存(不会保存路径),文件不存在则会新建,文件存在则会覆盖
--no-clobber (7.83.0版本以上支持)使用-o等选项将传输的数据保存到本地时,如果文件已经存在原文件会被覆盖。该选项可以避免覆盖已经存在的文件,如果文件已经存在,curl会在新保存的文件名后加上一个点和一个数字(如:test.1)来生成不同的文件名,这只支持生成到test.100,之后curl将不创建任何文件
-k 默认情况下,curl 建立的连接都会进行验证(如验证TLS 证书),此选项会让curl跳过验证步骤,这可能引发安全问题
-f 当请求的URL返回4xx响应码时,http服务一般会返回一个404页面文本,该选项可以禁止curl输出该数据,而是提前返回http错误码22,这在脚本中比较有用,脚本获取一个404相关的页面数据也没什么用,可以提前抛弃掉
--fail-early 在指定多个URL时,curl会依次执行这些传输任务,默认情况下,curl命令的执行结果只取决于最后一个URL是否成功传输,如果中间的某个URL返回错误代码也会被覆盖。该选项会让curl在遇到第一次传输失败时就返回一个错误,方便捕捉错误
-:或--next:用来重置所有本地选项,指定多个URL时如果要为不同的URL指定不同的选项,可以使用该选项重置之前指定的选项,该选项不会重置全局选项
-I 只获取响应头
-L 跟随重定向,当curl遇到服务器返回3XX响应码时,会前往重定向的新位置重做请求
-x [请求方法] 指定HTTP请求方法(GET、POST、PUT、DELETE 等)
-T [文件] 上传文件到指定URL
url通配
curl支持允许使用大括号{}、中括号[]来指定一个URL地址范围,此时需要使用双引号””来包裹URL地址,避免shell等程序解析这些字符
wget
介绍
wget(World Wide Web Get)是一个功能强大的命令行工具,用于从网络上下载文件和数据。它可以处理HTTP、HTTPS、FTP等协议,支持断点续传、递归下载、限速等功能,相较于curl,wget更像是一种专门用来下载文件的软件
命令
wget [选项] URL
- 默认情况下,wget命令会将文件保存到当前目录。下载时,wget命令会打印文件总大小、下载速度、下载进度等信息到stdout,且wget命令会默认自动处理HTTP重定向
- -q 静默模式,不输出任何信息
- -o 文件名 将下载的文件以新文件名保存到指定位置
- -O 文件名 将wget命令输出的下载信息日志保存到指定文件,而不再打印到屏幕
- -p 目录名将文件下载到指定目录
- -c 启用断点续传,继续下载暂停或中断的文件
- -r 递归下载网站或目录中的所有文件
- -l 值设置递归下载的深度,通常和-r选项搭配使用,如:-r -l 1表示只下载当前目录的文件
- -N 仅下载比本地文件新的文件(根据时间戳判断),适合用来同步文件
- -nd 不创建目录结构,将所有下载的文件都保存到当前目录
- -i 文件名从文件中读取URL,并依次下载
- --wait=值设置文件下载的时间间隔,避免对服务器造成过大负载
- --random-wait 设置随机等待时间,模拟更自然的用户行为
- –tries=值 设置下载失败后的重试次数,默认为20次
mkpasswd密码生成
mkpasswd有两个同名软件,一个用来生成随机密码,一个用来加密用户密码
生成随机密码
expect 包中mkpasswd 用来生成指定长度的随机密码,可以指定密码中数字、大小写英文字母和特殊字符的个数
安装
mkpasswd 是 expect 包中的一个脚本,使用前需要安装expect包
- Red Hat系列操作系统
sudo yum install expect
- Debian系列操作系统
sudo apt-get install expect
命令
mkpasswd [选项]
- -l 值:指定生成的密码长度,默认值为9
- -d 值:指定数字个数,默认值为2
- -c 值:指定小写字母的个数,默认值为2
- -C 值:指定大写字母的个数,默认值为2
- -s 值:指定特殊字符的个数,默认值为1
加密用户密码
whois 包中的 mkpasswd 是一个在 Linux 和 Unix 系统中生成加密密码的工具。它常用于加密用户密码,特别是在涉及到 /etc/shadow 文件或其他需要加密密码的场景下。mkpasswd 工具可以生成各种哈希算法加密的密码,如 MD5、SHA-256、SHA-512 等。
安装
在一些 Linux 发行版中,mkpasswd 是 whois 包的一部分。如果系统上没有 mkpasswd,可以通过包管理器安装 whois 包:
基于 Red Hat 的系统(如 CentOS、Fedora)
sudo yum install whois
基于 Debian 的系统(如 Ubuntu)
sudo apt-get install whois
命令
mkpasswd [选项] [密码] [盐值]
- 可以输入一个需要加密的明文密码
- 盐值可选,可以添加到密码中以增强哈希的安全性
- 默认使用MD5算法
- -m 算法:指定一个加密算法,如:sha-512,sha-256,md5等
time
linux中的time命令通常提供了两个,一个是bash内置的time命令,用来查看目录所消耗的时间。还有一个为外部工具,命令路径为/usr/bin/time,功能更为强大,可以查看命令所消耗的资源,包括内存使用情况
通过type命令可以看到两个命令的来源
bash内建的time
time [选项] 命令
- -o 文件名:将输出写入指定文件,如果已有该文件则覆盖
- -a 配合-o使用,将命令输出追加到文件末尾,而不是覆盖
- -p 以POSIX标准格式输出时间信息
外部time工具
/usr/bin/time [选项] 命令
- -o 文件名:将输出写入指定文件,如果已有该文件则覆盖
- -a 配合-o使用,将命令输出追加到文件末尾,而不是覆盖
- -p 以POSIX标准格式输出时间信息
- -v 详细输出命令所消耗的时间、内存等信息