你的第一个脚本:“你好,黑客崛起!”
首先,您需要告诉操作系统您要为脚本使用哪个解释器。 为此,请输入 shebang
,它是井号和感叹号的组合,如下所示:#!
然后,在 shebang (#!) 后面加上 /bin/bash 来指示您希望操作系统使用 bash shell 解释器。正如您将在后面的章节中看到的,您还可以使用 shebang 来使用其他解释器,例如 Perl 或 Python。 在这里,使用 bash 解释器,因此输入以下内容:#! /bin/bash
接下来,输入 echo 命令,该命令告诉系统简单地重复(或回显)该命令后面的任何内容到您的监视器。请注意,我们要回显的文本或消息必须用双引号引起来。
#! /bin/bash
echo "Hello, Hackers-Arise"
现在,将此文件另存为 HelloHackersArise,不带扩展名,然后退出文本编辑器。
设置执行权限
chmod 755 HelloHackersArise
– 设置刚刚创建的脚本的权限,给予它可执行权限。
运行 HelloHackersArise
./HelloHackersArise
– 运行刚刚创建的脚本文件。
通过变量和用户输入添加功能
变量是可以在内存中保存某些内容的存储区域。保存的内容可以是一些字母或单词(字符串)或数字。 它之所以被称为变量,是因为其中保存的值是可变的;
在我们的下一个脚本中,我们将添加功能来提示用户输入他们的姓名,将他们输入的任何内容放入变量中,然后提示用户输入他们在本书中的章节,并将键盘输入放入变量中。 之后,我们将向用户回显一条欢迎消息,其中包括他们的姓名和章节。
#! /bin/bash
# This is your second bash script. In this one, you prompt
# the user for input, place the input in a variable, and
# display the variable contents in a string.
echo "What is your name?"
read name
echo "What chapter are you on in Linux Basics for Hackers?"
read chapter
echo "Welcome $name to Chapter $chapter of Linux Basics for Hackers!"
我们提示用户输入他们的名字,并要求解释器读取输入并将其放入我们称为name
的变量中。然后我们提示用户输入他们当前正在阅读的章节,然后我们再次将键盘输入读取到一个变量中,这次称为chapter
。要使用变量中包含的值,必须在变量名称前添加 $
符号。
将此文件另存为 WelcomeScript.sh。 .sh
扩展名是脚本文件的约定。如果您不使用扩展名也没有什么区别。这并不是严格要求的。不过,该扩展名对于其他人来说可能是一个有用的指示,表明该文件是一个 shell 脚本。
您的第一个黑客脚本:扫描开放端口
最简单且最可靠的 nmap 扫描是 TCP 连接扫描,由 nmap 中的 -sT 开关指定。 因此,如果您想使用 TCP 扫描来扫描 IP 地址 192.168.181.1,您需要输入以下内容:namp -sT 192.168.181.1
更进一步,如果您想对地址 192.168.181.1 执行 TCP 扫描,查看端口 3306(MySQL 的默认端口)是否打开,您可以输入以下内容:nmap -sT 192.168.181.1 -p 3306
这里,-p
指定要扫描的端口。
我们的任务
一个简单的扫描仪
在我们编写脚本来扫描互联网上的公共 IP 之前,让我们先完成一个更小的任务。 我们先不扫描全球,而是先编写一个脚本来扫描局域网上的 3306 端口,看看我们的脚本是否真的有效。 如果是这样,我们可以轻松地编辑它来完成更大的任务。
在文本编辑器中,输入下列脚本:
#! /bin/bash
# This script is designed to find hosts with MySQL installed
nmap -sT 192.168.181.0/24 -p 3306 >/dev/null -oG MySQLscan
cat MySQLscan | grep open > MySQLscan2
cat MySQLscan2
现在让我们使用 nmap 命令在 LAN 上请求 TCP 扫描,寻找端口 3306 。 (请注意,您的 IP 地址可能有所不同;在您的终端中,使用 Linux 上的 ifconfig 命令或 Windows 上的 ipconfig 命令来确定您的 IP 地址。)重定向符号 > 告诉标准 nmap 输出(通常会显示在屏幕上)改为转到 /dev/null,这只是一个发送输出的地方,以便它消失。我们是在本地计算机上执行此操作,因此这并不重要,但如果您要远程使用该脚本,则需要隐藏 nmap 输出。 然后,我们将扫描的输出以 grep 格式发送到名为 MySQLscan 的文件,这意味着 grep 可以处理的格式。
改进 MySQL 扫描器
现在我们要修改此脚本,使其不仅仅适用于您自己的本地网络。 如果该脚本可以提示用户输入要扫描的 IP 地址范围和要查找的端口,然后使用该输入,那么它会更容易使用。
向我们的黑客脚本添加提示和变量
#! /bin/bash
echo "Enter the starting IP address : "
read FirstIP
echo "Enter the last octet of the last IP address : "
read LastOctetIP
echo "Enter the port number you want to scan for : "
read port
nmap -sT $FirstIP-$LastOctetIP -p $port >/dev/null -oG MySQLscan
cat MySQLscan | grep open > MySQLscan2
cat MySQLscan2
A Sample Run
现在我们可以使用变量来运行简单的扫描器脚本,这些变量确定要扫描的 IP 地址范围和端口,而无需每次要运行扫描时都编辑脚本:./HelloHackersArise.sh
常见的内置 Bash 命令