操作Kali需要知道的编程语言(一):Bash编程

bash编程又称bash脚本和shell脚本,是一种有多条线终端命令构成的脚本程序,所有可以直接在终端界面里运行的命令,都可以通过脚本来执行

我们拿就拿ping命令来说,怎么使用ping命令对局域网进行扫描,识别当前网络下活跃主机,下面笔者将通过bash编程来简单的解释

1.在Linux中创建一个.sh程序         命令:touch xxxx.sh    

2.启用编辑模式vim/nano编写脚本


操作Kali需要知道的编程语言(一):Bash编程_第1张图片

在第一行:#/bin/bash     会让终端界面调用Bash解释器

第二行:if判断语句

它的写法很简单

if [条件表达式]

then

..............

else

..............

相当于其他语言if判断语句,拿java来说,上面的if判断语句就等同于

if(条件表达式){

..................

}else{.

then即相当于大括号

条件表达式[" $1" == " " ]   这句话的意识是说[ "当第一个参数为空时" ]     $1表示传入的第一个参数。==是逻辑判断符

下面的echo "........",用于像终端界面输出提示,当第一个传输参数为空的时候就会显示echo “ ”中的内容,如果不为空就显示else里面的内容

但光有if语句是不行的,即使传递了一个参数,这个程序也不具备相应的处理功能,因为我们要探测某个“c类网段”的全部在线主机,所以需要以循环的方式ping那些末尾为1~254(IPv4地址的最后一个八位组)的全部IP

for循环语句

for x in `seq 1 254`;

等同于java中

for(int x=1;x<=254;x++){

}

当我们传递参数时,例如当我们在终端执行./xxxx.sh 192.168.20时脚本程序会从192.168.20.1开始直到运行到192.168.20.254时结束

(这里说一下,为什么需要以./xxxx.sh来运行程序。应为当前目录没有被环境变量PATH收录所有不能直接以xxx.sh运行)

for x in `seq 1 254`;后面跟do表示执行,do下面就是要执行的内容了

ping -c $1.$x

我们希望程序在for循环语句的每次迭代过程中都ping一个ip地址。根据相关使用说明可知,ping命令的-c选项可以限定它ping某台既定主机的探测次数。因此-c选项设定为1,让程序对每个主机只ping一次

$1.$x:$1表示传入的第一个参数,$x表示for循环使用的循环变量

但是这样ping出来的效果好像不是很理想,因为我们只需要知道在线的主机就行了

所以我们在ping -c $1.$x后面加上grep筛选命令

ping -c $1.$x | grep "64 bytes from"

如此一来就可以只看在线主机的ip地址了

值得注意的是在保存脚本过后,需要使用chmod命令进行权限处理

你可能感兴趣的:(操作Kali需要知道的编程语言(一):Bash编程)