shell实用脚本命令

本文介绍了Bash编程中的declare命令用法,包括变量类型和只读变量,以及fping工具的高效ping功能、IP地址计算和管理(如ipcalc和lockfile)、网络服务扫描(如NmapDHCP服务检测)和简单文件传输协议TFTP。
摘要由CSDN通过智能技术生成

1. declare

declare 命令是一个非常常用的命令之一,它可以用来声明变量的类型和属性,比如变量的作用域、是否只读等等。
一、declare命令的基本用法


declare 命令可以用来声明变量,其最基本的用法如下:

declare 变量名
在上面的命令中,declare 声明了一个名为“变量名”的变量。注意,这里只是声明了变量,还没有给变量赋值。如果要给变量赋值,可以用以下语法:

declare 变量名=值
在上面的命令中,“值”是你想要赋给变量的值,可以是一个字符串、数字、布尔值等等。

二、变量类型

在声明变量时,declare 命令可以指定变量的类型。常见的变量类型有以下几种:

1. 整数变量
可以使用 i 或整数前缀转换为整数类型。

declare -i var=10
echo $var   # 输出 10
var=abc
echo $var   # 输出 0
当赋值非整数型数值时,变量为 02. 数组变量
使用 a 前缀来声明一个数组变量。

declare -a array=("a" "b" "c")
echo ${array[1]}   # 输出 b
注意,数组必须用小括号而不是大括号来初始化。

3. 关联数组变量
使用 A 前缀声明关联数组变量。

declare -A ass_array=(["key1"]="value1" ["key2"]="value2")
echo ${ass_array["key1"]}   # 输出 value1

关联数组变量是 Bash 4.0 引入的新特性。

四、只读变量
有些变量只需要被赋值一次,并在接下来的脚本中不再改变,那么就可以将其声明为只读变量。只读变量不能再次赋值。

declare -r var="read only variable"
var="new value"                      # 报错

只读变量声明中必须要给它一个值。如果使用 -r 命令行选项,则可以将变量标记为只读,但在声明时必须给出值。

2. fping

fping是一种快速ping多个IP地址的命令行工具。通过使用多线程技术,它能够加快ping的速度,提高工作效率。

fping的优势在于支持同时ping多个目标,同时输出结果,并且不需要手动输入多个ping指令。除此之外,它还可以扫描任意IP段或者解析域名获取对应的IP信息,并可设置超时和重传间隔时间

2.1 ping单个IP地址:fping IP地址
示例代码:
fping 192.168.1.1

输出结果如下:
192.168.1.1 is alive
2.2fping工具还支持同时ping多个IP地址:fping IP地址1 IP地址2。
示例代码:
fping 192.168.1.1 192.168.1.2

输出结果如下:
192.168.1.1 is alive
192.168.1.2 is alive
2.3扫描IP段

如果需要扫描整个IP段或者一定范围内的所有IP地址,可以使用“-g”参数。
示例代码:

fping -g 192.168.1.1/24

输出结果如下:
192.168.1.1 is alive
192.168.1.2 is alive
192.168.1.3 is alive
...
192.168.1.254 is alive

上述代码中的“/24”表示扫描该IP地址下的所有IP地址。

2.4使用域名作为参数
示例代码:
fping www.baidu.com

输出结果如下:
www.baidu.com is alive
2.5 超时时间和重试时间间隔设置

通过“-t”和“-i”参数设置fping的超时时间和重试时间间隔。

示例代码:
fping -t 1000 -i 2   192.168.1.1

上述代码中的“-t”参数表示超时时间为1000ms,“-i”参数表示重试时间间隔为2s。

2.6 fping常用参数
fping常用的参数:

-a: 查找任何存活的主机。
-b: 用默认网关来ping主机。
-c: 设置ping包的数量。
-d: 使用翻译模式。
-e: 禁止DNS反向查找。
-f: 使用文件中的内容。
-g: 强制数量统计。
-h: 显示帮助信息。
-i: 设置重试间隔时间。
-l: 设置循环ping的次数。
-n: 只输出数字形式的IP地址。
-p: 设置ICMP ping类型。
-q: 静音模式,不将任何结果输出到屏幕上。
-s: 扫描一段时间内的活动主机。
-t: 设置ping包的超时时间。

3.ipcalc

ipcalc命令是一个简单的ip地址计算器,可以完成简单的IP地址计算任务。

语法格式
ipcalc [参数] [IP地址]

常用参数:
-b	由给定的IP地址和网络掩码计算出广播地址
-h	显示给定IP地址所对应的主机名
-m	由给定的IP地址计算器网络掩码
-p	显示给定的掩码或IP地址的前缀
-n	由给定的IP地址和网络掩码计算网络地址
-s	安静模式,不显示任何错误信息
--help	显示帮助信息

实例:

计算给定掩码的前缀 :
[root@linux265 ~]# ipcalc -p 192.168.88.56 255.255.255.0
PREFIX=24

给定IP和网络掩码计算网络地址 :
[root@linux265 ~]# ipcalc -n 192.168.88.56 255.255.255.0
NETWORK=192.168.88.0

给定IP显示对应的主机名:
[root@linux265 ~]# ipcalc -h 223.5.5.5
HOSTNAME=public1.alidns.com

使用多个参数计算给定IP的网络掩码,广播地址,网络地址:
[root@linux265 ~]# ipcalc -m -b -n 119.29.29.29/28
NETMASK=255.255.255.240
BROADCAST=119.29.29.31
NETWORK=119.29.29.16

4.lockfile

lockfile是一种文件锁定的机制。当多个进程需要同时访问同一文件时,存在并发读写问题。此时可以利用lockfile的机制,确保同时只有一个进程对文件进行写入或操作。这种机制常用于日志记录、数据库以及其他并发系统。

lockfile是什么文件

lockfile可以是任何类型的文件,但在Linux中,通常是一个空文件,其命名约定为.lock。锁文件的存在表示该文件正在被处理中,因此其他进程就不能对其进行读写。一旦当前进程完成文件处理,可以删除该.lock文件并释放锁定机制。

lockfile解锁

在多数情况下,当进程完成文件操作后,lockfile会自动解锁并删除锁文件。但是,在某些情况下,如果进程异常退出或发生错误,则可能会导致lockfile无法正常解锁。这时需要手动解锁,可以使用以下命令:

$ rm -f /var/lock/[lockfile_name].lock

如果无法删除锁文件,则可能需要重启计算机才能解决。

lockfile用法

在shell脚本中,可以使用lockfile命令来创建和管理lockfile。该命令的用法如下:

lockfile [options] filename
参数说明:
-r retry - 尝试加锁失败后的重试秒数,默认为5秒
-l - 在尝试锁定文件时打印消息到stderr
-s - 在成功加锁时发送消息到stderr	

要释放锁定并删除lockfile,可以使用以下命令:

rm -f [filename].lock

例如,要对文件 /tmp/test 进行排他锁定,可以使用以下命令:

lockfile -r 5 -l 10 /tmp/test

这样,lockfile 命令会获取 /tmp/test 文件的排他锁,并等待 10 秒钟,如果获取锁失败,会重试 5 次。

5 Nmap扫描 网络基础服务DHCP服务类

常见的网络基础服务包括DHCP服务和DNS服务。其中,DHCP服务用来为计算机动态分配IP地址;DNS服务用来对主机名进行解析

当一台客户机需要一个IP地址时,将会向DHCP服务器发送广播包。然后,收到请求的服务器会提供一个可用的IP地址给客户端。由于客户端在请求包时发送的是广播包,所以存在一定的风险

通过向网络中发送一个DHCP Request(DHCP请求)广播包,可以获取到当前局域网中可用的一个IP地址。在Nmap中,broadcast-dhcp-discover脚本可以用来发送DHCP广播请求,并显示响应包的详细信息。通过读分析响应的包信息,可以找到可分配的IP地址。

语法格式如下所示:
nmap --script broadcast-dhcp-discover 

-e: 指定网卡
nmap --script broadcast-dhcp-discover   -e  eth0 
nmap --script broadcast-dhcp-discover   -e  eth1

在这里插入图片描述

6 tftp

tftp $SERVER -c get pxelinux.0

TFTP是用来下载远程文件的最简单网络协议,它其于UDP协议而实现。

-c:指定与tftp服务器连接成功后,立即要执行的指令;
-m:指定文件传输模式。可以是ASCII或者Binary;
-v:显示指令详细执行过程;
-V:显示指令版本信息。

tftp your-ip-address
进入TFTP操作:
connect:连接到远程tftp服务器
mode:文件传输模式
put:上传文件
get:下载文件
quit:退出
verbose:显示详细的处理信息
tarce:显示包路径
status:显示当前状态信息
binary:二进制传输模式
ascii:ascii 传送模式
rexmt:设置包传输的超时时间
timeout:设置重传的超时时间
help:帮助信息
? :帮助信息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值