小编Mik*_*e B的帖子

如何使用 SED 或 AWK 将模板文件中的占位符替换为包含特殊字符的可变内容?

CentOS 6.3

我正在尝试使用一个小脚本来发送一封电子邮件,其中包含正文中的电子邮件标题副本(用于内部报告)。

模板文件包含以下内容:

Alert Report

Alert has triggered at TMPDATE

HEADERS
-------
TMPHEADERS

SOURCE IP
---------
TMPSOURCEIP
Run Code Online (Sandbox Code Playgroud)

我希望我的脚本找到并用与警报相关的实际信息替换“TMP”占位符。

日期和源 IP 变量似乎工作正常,但是如果/当我尝试查找/替换 TMPHEADERS 时,它会导致奇怪的症状,包括整个输出为空白。我有理由肯定它与包含大量特殊字符(@ % & 等)的标题有关。

有人可以建议如何最好地通过 bash 完成此操作吗?

我当前的代码如下所示:

cat /test/emailtemplate | sed s/TMPHEADERS/"$HEADERS"/ > /test/output
Run Code Online (Sandbox Code Playgroud)

更新

根据请求,这是我尝试插入模板文件的一组示例标头(IP 地址和电子邮件地址已更改以保护无辜者 :-) ):

From foo@yahoo.com Thu Apr 25 20:18:19 2013
Return-Path: <foo@yahoo.com>
Received: from nm30-vm0.bullet.mail.ne1.yahoo.com (nm30-vm0.bullet.mail.ne1.yahoo.com [98.138.11.36])
by serv.example.com (8.14.4/8.14.4) with ESMTP id r3Q3IJVV009411
for <test@example.com>; Thu, 25 Apr 2013 20:18:19 -0700
Received: from [108.108.108.108] by nm30.bullet.mail.ne1.yahoo.com with NNFMP; 26 …
Run Code Online (Sandbox Code Playgroud)

sed awk text-processing

9
推荐指数
2
解决办法
2万
查看次数

为什么 RHEL 6 128 TB 的理论 RAM 限制是多少?这是如何确定的?

我正在为 RHCSA 学习,但对我在一些培训材料中遇到的声明感到困惑:

没有实际的最大 RAM,因为理论上,您可以在 RHEL 6 上运行 128 TB 的 RAM。但这只是理论。Red Hat 在 RHEL 6 上支持的最大 RAM 在 32 位系统上为 16 GB,在 64 位系统上为 2 TB。

有人可以解释一下 128 TB 的理论限制来自哪里吗?如果 RHEL 6 明确定义了其他最大限制,我对作者如何知道理论限制存在感到困惑。这只是考虑了 64 位架构的理论限制吗?还是这里有其他原因?

rhel memory virtual-memory linux-kernel ram

8
推荐指数
2
解决办法
8500
查看次数

iptables -F 是否永久删除所有 iptables 规则?

在 RHEL 培训文档中,作者说:

...运行以下命令以禁用当前系统上的防火墙:iptables -F

他明确使用了“禁用”这个词,对我来说,这表明重新启用会很简单。在阅读 iptables 的手册页时,我看到了这一点:

刷新选定的链(如果没有给出表中的所有链)。这相当于将所有规则一一删除

我可以获得有关预期行为的说明吗?

rhel iptables

8
推荐指数
2
解决办法
3万
查看次数

whatis 和 apropos 命令之间有什么区别?

CentOS 6.3 / RHEL 6.3

有人可以解释whatis命令和apropos命令之间的区别吗?我注意到两者似乎都是默认安装的,我不确定它们之间有什么区别。

command-line rhel centos

8
推荐指数
2
解决办法
8533
查看次数

为两个完全独立的事物 grep 并将值分配给单独的变量的最有效方法是什么?

CentOS 6.x

我想从 curl、grep 获取两个完全独立的字符串的输出,并将它们各自的值分配为变量。执行此操作的最有效方法是什么(不将输出写入磁盘)?

通常我会想到有一个类似的脚本:

#!/usr/bin/env bash
foo1=$(curl https://domain.com/file.xml | grep string1)
foo2=$(curl https://domain.com/file.xml | grep string2)
Run Code Online (Sandbox Code Playgroud)

但这最终需要两次传球,而且效率极低。有没有更好的办法?希望有一个涉及更少通行证的解决方案?

grep scripting bash variable

8
推荐指数
1
解决办法
7887
查看次数

如何在不影响数据传输的情况下手动重置 ifconfig 输出中的 RX / TX 计数器?

CentOS 5.9

我想重置接口的 ifconfig 输出中的 RX/TX 计数器。我的理解是这些计数器在重新启动期间会重置,但我想避免重新启动。有没有另一种方法可以重置不干扰数据传输的方法?

networking centos ifconfig

8
推荐指数
1
解决办法
2万
查看次数

在 openVZ 主机上运行 ntpd 时出错:cap_set_proc() 未能删除 root 权限:

CentOS 6.x | OpenVZ

我想在我的 vps 主机上运行 NTP 服务器。这可能吗?

当我尝试启动 ntpd 时,它立即失败并出现以下错误:

Mar 14 22:47:44 ev1 ntpd[3456]: cap_set_proc() failed to drop root privileges: Operation not permitted
Run Code Online (Sandbox Code Playgroud)

我已将其本地化为 /etc/sysconfig/ntpd 中的设置

# Drop root to id 'ntp:ntp' by default.
OPTIONS="-u ntp:ntp -p /var/run/ntpd.pid -g"
Run Code Online (Sandbox Code Playgroud)

启用此行时,它会失败(大概是因为共享内核拒绝允许权限更改)。如果我将其注释掉,ntpd 运行良好,但以 root 身份运行,这是一件坏事。

无论如何让ntpd在openVZ上以ntp用户身份运行?诚然,我知道在 OpenVZ 服务器上运行它是一个好主意,但我仍然想尝试一下。

centos ntpd ntp

7
推荐指数
1
解决办法
8960
查看次数

什么是 IPV4_FAILURE_FATAL ifcfg 指令,我想在什么情况下使用它?

CentOS / RHEL 6

我最近了解到有一个名为IPV4_FAILURE_FATALexists的 ifcfg 指令可用于位于此处的文件:/etc/sysconfig/networking-scripts/ifcfg-*. 但是我很难找到有关它的信息。

  • 它有什么作用?
  • 在什么情况下我会希望它设置为“是”?

linux rhel

7
推荐指数
1
解决办法
2万
查看次数

我是否需要将 awk 变量封装在引号中才能对其进行清理?

根据对 stackoverflow回答,我的理解是将 bash 变量封装在双引号中是一种相当安全的用户输入清理方式。

awk 变量呢?例如,如果我有类似的东西:

awk -v SOURCEIP="$SOURCEIP" -v REVERSEDNS="$REVERSEDNS" '{
   gsub(/^_TMPSOURCEIP_/, SOURCEIP);
   gsub(/^_TMPREVERSEDNS_/, REVERSEDNS);
   print
}' /home/foo/footemplate
Run Code Online (Sandbox Code Playgroud)

我应该在 gsub 行中的变量周围加上引号吗?所以它看起来像:

awk -v SOURCEIP="$SOURCEIP" -v REVERSEDNS="$REVERSEDNS" '{
   gsub(/^_TMPSOURCEIP_/, "SOURCEIP");
   gsub(/^_TMPREVERSEDNS_/, "REVERSEDNS");
   print
}' /home/foo/footemplate
Run Code Online (Sandbox Code Playgroud)

或者这没有区别?

shell security awk shell-script quoting

7
推荐指数
2
解决办法
2万
查看次数

“如果!”是什么意思 意思?

我遇到了这样的 if/then 语句:

if ! foo ; then
        echo "blah" 
        exit 1
fi
Run Code Online (Sandbox Code Playgroud)

具体if !是什么意思?“如果结果foo不是真的?” “如果退出代码foo不是 0”?

shell

7
推荐指数
3
解决办法
4847
查看次数