编写一个shell脚本 读取log日志的最后一行并打印
时间: 2023-02-28 22:38:44 浏览: 201
以下是一个读取日志文件最后一行并打印的 shell 脚本:
```
#!/bin/bash
filename="log.txt"
# 读取日志文件最后一行
last_line=$(tail -n 1 "$filename")
# 打印最后一行
echo "$last_line"
```
请注意,上面的脚本假设日志文件名为 `log.txt`,请根据您的需要修改文件名。
相关问题
编写一个shell脚本,获取最后一次ssh连接的源IP并把这个IP加入防火墙白名单
### 回答1:
以下是一个实现这个功能的简单的shell脚本:
```bash
#!/bin/bash
# 获取最后一次SSH连接的源IP地址
last_ip=$(grep "Accepted publickey for" /var/log/auth.log | tail -1 | awk '{print $11}')
# 把IP地址添加到防火墙白名单
iptables -A INPUT -p tcp -s $last_ip --dport 22 -j ACCEPT
```
这个脚本首先在`/var/log/auth.log`文件中查找最后一次SSH连接记录,然后使用`tail`命令获取最后一行,使用`awk`命令提取源IP地址。最后,使用`iptables`命令将该IP地址添加到防火墙白名单中,允许其访问SSH服务。
需要注意的是,这个脚本需要以root用户权限运行,否则无法修改防火墙规则。
### 回答2:
编写一个shell脚本以获取最后一次ssh连接的源IP,并将此IP添加到防火墙白名单中,可按照以下步骤进行:
1. 创建一个名为"add_to_firewall.sh"的脚本文件,并使用文本编辑器打开它。
2. 在文件的开头添加以下shebang,以指定脚本使用的shell类型:
```bash
#!/bin/bash
```
3. 使用以下命令获取最后一次ssh连接的源IP:
```bash
last_login=$(grep "Accepted password for" /var/log/auth.log | tail -n 1 | awk '{print $11}' | cut -d '=' -f 2)
```
解释:
- 使用grep命令搜索包含"Accepted password for"字符串的/var/log/auth.log文件中的行。
- 使用tail命令获取最后一行(即最后一次ssh连接)。
- 使用awk命令提取第11个字段(即源IP地址)。
- 使用cut命令按照'='分隔符获取第2个字段(即IP地址)。
4. 使用以下命令将获取到的IP添加到防火墙白名单中(假设使用iptables作为防火墙):
```bash
iptables -A INPUT -s $last_login -j ACCEPT
```
解释:
- 使用iptables命令将获取到的IP地址作为源地址添加到INPUT链中,并允许该IP通过防火墙。
5. 保存并关闭文件。
6. 运行以下命令赋予脚本文件执行权限:
```bash
chmod +x add_to_firewall.sh
```
7. 然后,运行脚本文件以执行脚本:
```bash
./add_to_firewall.sh
```
脚本将获取最后一次ssh连接的源IP,并将其添加到防火墙白名单中。
请注意,这只是一个简单的示例脚本,具体实现可能因操作系统、防火墙软件等环境而有所不同。
### 回答3:
编写一个shell脚本来获取最后一次SSH连接的源IP,并将这个IP添加到防火墙的白名单。以下是一个可能的解决方案:
```bash
#!/bin/bash
# 获取最后一次SSH连接的源IP
last_ip=$(grep "Accepted publickey for" /var/log/auth.log | tail -n 1 | awk '{print $NF}')
# 添加IP到防火墙白名单
iptables -A INPUT -p tcp --dport 22 -s $last_ip -j ACCEPT
# 保存防火墙配置
iptables-save > /etc/iptables/rules.v4
```
这个脚本假设日志文件位于 `/var/log/auth.log`,且SSH连接的记录行包含 "Accepted publickey for"。根据实际情况,你可能需要相应地更改这些内容。
脚本首先使用 `grep` 命令查找日志文件中包含 "Accepted publickey for" 的行,然后使用 `tail -n 1` 获取最后一行,最后使用 `awk '{print $NF}'` 提取IP地址。这样就可以得到最后一次SSH连接的源IP。
然后,脚本使用 `iptables` 命令将获取到的IP地址添加到防火墙的INPUT链中的SSH端口的ACCEPT规则中。最后,使用 `iptables-save` 命令将防火墙配置保存到 `/etc/iptables/rules.v4` 文件中,以便在系统重启后仍然有效。
请注意,该脚本需要具有足够的权限才能执行iptables和读取日志文件。在运行脚本之前,你需要确保以root权限运行或具有与此相当的权限。
希望对你有所帮助!
shell脚本实时读取打印信息
您可以使用 `tail -f` 命令来实时读取和打印日志文件的信息。该命令会不断读取文件的末尾内容,并将新添加的内容实时显示在终端上。以下是一个示例:
```shell
tail -f logfile.log
```
在这个示例中,`logfile.log` 是您要实时读取的日志文件名。您可以根据实际情况更改该文件名。
请注意,`tail -f` 命令会一直运行,直到您手动停止它(按下 Ctrl+C)。
阅读全文