写一个shell脚本,存在服务器A和服务器B,现在我在服务器A上使用该脚本通过grep命令把服务器B上的文件B.log中的文本抓取到A服务器上并输出
时间: 2024-03-15 18:47:19 浏览: 17
可以使用SSH远程连接到服务器B,然后在服务器B上运行grep命令,将结果输出到标准输出流(stdout),再使用SSH或SCP将其输出到服务器A上。具体步骤如下:
1. 在服务器A上创建一个shell脚本,例如:get_log.sh。
2. 编辑get_log.sh脚本,输入以下内容:
```
#!/bin/bash
# 服务器B的IP地址或域名
B_HOST="B_IP_ADDRESS_OR_DOMAIN"
# 服务器B的登录用户名
B_USER="B_LOGIN_USERNAME"
# 服务器B的文件路径
B_FILE="/path/to/B.log"
# 在服务器B上执行grep命令,并将结果输出到标准输出流
B_RESULT=$(ssh "${B_USER}@${B_HOST}" "grep 'keyword' ${B_FILE}")
# 将结果输出到本地文件
echo "${B_RESULT}" > /path/to/local_file
```
其中,B_IP_ADDRESS_OR_DOMAIN为服务器B的IP地址或域名,B_LOGIN_USERNAME为服务器B的登录用户名,/path/to/B.log为服务器B上要搜索的文件路径,'keyword'为要搜索的关键词,/path/to/local_file为本地文件路径。
3. 在服务器A上运行get_log.sh脚本,例如:
```
sh get_log.sh
```
这样,就可以在本地文件中查看到从服务器B抓取的文本了。
如果B_RESULT中包含换行符,可以将echo "${B_RESULT}"改为echo -e "${B_RESULT}"来保留换行符。如果服务器B是使用密钥认证登录的,可以将ssh "${B_USER}@${B_HOST}"改为ssh -i /path/to/private_key "${B_USER}@${B_HOST}"来指定私钥文件路径。