14-2.Shell脚本编写及常见面试题(三)
12.21 FTP下载文件
12.22 输入五个100数之内的字符,统计和、最小和最大

12.23 将结果分别赋值给变量
12.24 批量修改文件名
12.25 统计当前目录中以.html结尾的文件总大小
12.26 扫描主机端口状态
#!/bin/bash HOST=$1 PORT="22 25 80 8080" for PORT in $PORT; do if echo &>/dev/null > /dev/tcp/$HOST/$PORT; then echo "$PORT open" else echo "$PORT close" fi done

12.27 Expect实现SSH免交互执行命令
需要先安装expect工具。
expect涉及用法说明:
命令描述
set可以设置超时,也可以设置变量
timeout超时等待时间,默认10s
spawn执行一个命令
expect ""匹配输出的内容
exp_continue继续执行下面匹配
\r回车
$argc统计位置参数数量
[lindex $argv 0]位置参数
puts打印字符串,类似于echo
expect{...}输入多行记录
方法1:EOF标准输出作为expect标准输入
方法2:
方法3:将expect脚本独立出来
login.exp登录文件:
执行命令脚本:
SSH连接信息文件:
# cat user_info
192.168.1.120 root 123456
12.28 批量修改服务器用户密码
旧密码SSH主机信息old_info文件:
# ip user passwd port
#--------------------------------------
192.168.18.217 root 123456 22
192.168.18.218 root 123456 22
修改密码脚本:
生成新密码new_info文件:
192.168.18.217 root n8wX3mU% 22
192.168.18.218 root c87;ZnnL 22
12.29 打印乘法口诀

12.30 getopts工具完善脚本命令行参数
getopts是一个解析脚本选项参数的工具。
命令格式:getopts optstring name [arg]
初次使用你要注意这几点:
1)脚本位置参数会与optstring中的单个字母逐个匹配,如果匹配到就赋值给name,否则赋值name为问号;
2)optstring中单个字母是一个选项,如果字母后面加冒号,表示该选项后面带参数,参数值并会赋值给OPTARG变量;
3)optstring中第一个是冒号,表示屏蔽系统错误(test.sh: illegal option -- h);
4)允许把选项放一起,例如-ab
下面写一个打印文件指定行的简单例子,用于引导你思路,扩展你的脚本选项功能:

思路扩展:限定脚本参数,将参数保存变量,下面调用变量继续操作。

浙公网安备 33010602011771号