小编hel*_*ode的帖子

是否可以访问完整的命令行,包括 bash 脚本中的管道?

例如命令行:

test.sh arg1 | grep "xyz"
Run Code Online (Sandbox Code Playgroud)

是否可以在 bash 脚本 test.sh 中获得包含以下 grep 的完整命令行?

bash

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

避免在重新启动时被临时主机名覆盖主机名

我的服务器是 CentOS 7.1。重新启动后,主机名被临时主机名 ( mail)覆盖,我找不到避免这种情况的方法。也许 AutoDNS 和 MX 记录mail会导致这种情况?

  • /etc/hostname 包含正确的值
  • hostnamectl --transient set-hostname my.desired.name 正在工作,但仅在下次重新启动之前

所以,重启后:

  • hostnamectl status显示正确的静态主机名,但显示错误的瞬态主机名 ( mail)。
  • hostname -shostname -f显示错误的主机名。

该文件/etc/sysconfig/network被“由 anaconda”覆盖并具有HOSTNAME="mail". 我试图编辑此文件以配置正确的名称,但它在重新启动后被覆盖。

如何防止mail在重新启动后设置临时主机名?


编辑:
我已经尝试添加DHCP_HOSTNAME="my.desired.name"到我的 /etc/sysconfig/network-scripts/ifcfg-e ..... 但没有成功(重启后行被删除)。
我尝试hostnamectl set-hostname "" --transient在重新启动时添加执行(这会将瞬态设置为静态主机名的值),这在启动时失败了,或者在激活 /etc/rc.local 时失败,也作为服务与 chkconfig on(使用 # chkconfig: - 11 91 so它应该在所有其他服务之后运行)。

欢迎任何进一步的建议。

hostname centos

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

使用管道命令的 eval 限制

我们有一个 shell 脚本,它在一个变量中构建了一个长管道命令链,并使用 eval 执行它(以下代码简化为基本代码):

 cmd="cat /some/files | grep -v \"this\" | grep -v \"that\""
 cmd="$cmd | grep -v \"much more dynamical filter with variables\""
 ...
 result=`eval $cmd`
Run Code Online (Sandbox Code Playgroud)

到目前为止一切正常,但现在似乎 cmd 变量的内容超出了限制。当它超过大约 95970 字节时,我将收到错误(尽管语法是正确的):

eval: line ...: syntax error near unexpected token `|'
Run Code Online (Sandbox Code Playgroud)

我做了一些研究,但我没有得到任何线索(getconf ARG_MAX echoes 2621440,ulimit -a 也没有帮助我)。

有人可以解释一下这可能是哪个限制,也许如何增加限制或避免它的最佳方法是什么?


编辑:我现在用指定的脚本在三个不同的服务器(centos)上测试了它。在所有服务器上,我最终使用 eval 在一个命令中达到了 3333 个管道。

我找到了另一个页面,其中有人经历了相同但没有 eval 的经历。所以它似乎只是管道的限制。

知道限制可能是由管道数量引起的将帮助我解决这个问题。所以这不再是问题了。

但是我仍然对如何设置此限制或至少如何在不为此运行脚本的情况下检测限制值(可能不是在每个系统 3333 上)感兴趣。

它可以通过以下方式复制:

yes cat | head -n 3334 | paste -sd '|' - | bash
Run Code Online (Sandbox Code Playgroud)

shell bash pipe

5
推荐指数
1
解决办法
2195
查看次数

具有相同主目录的多个 chroot 用户的授权密钥

我们使用 OpenSSH_5.3p1 运行 CentOS 6.9,并为具有相同主目录(挂载到 htdocs)的外部用户创建了 chroot 帐户。问题是文件.ssh/authorized_keys2归第一个用户所有(这已经有效)。我怎样才能让它为另一个用户工作?

我尝试AuthorizedKeysFile在 sshd_config 中添加一个具有多个文件路径的文件,但出现错误garbage at end of line

我试图在第二个用户的匹配块中添加一个AuthorizedKeysFile输入sshd_config,但出现错误'AuthorizedKeysFile' is not allowed within a Match block

我无法更改主目录,否则路径与开发的真实路径不同。

任何建议如何解决它?我是否必须将 OpenSSH 升级到支持多个条目的较新版本AuthorizedKeysFile(我想我必须用 rpm 构建它)?之后的安全更新呢?

chroot ssh openssh key-authentication

4
推荐指数
1
解决办法
9445
查看次数

标签 统计

bash ×2

centos ×1

chroot ×1

hostname ×1

key-authentication ×1

openssh ×1

pipe ×1

shell ×1

ssh ×1