我想允许一个用户运行 grep(通过 sudo),并为一个特定文件中的一个特定字符串 grep。我不想让这个用户能够对所有文件运行 grep。用户没有对该文件的读取权限,因此需要使用 sudo。我正在尝试编写一个 nagios 检查,它对机器上另一个服务的日志文件进行 grep。
但是它不起作用,sudo 不断要求输入密码。
我的命令是:(sudo grep "string I want (" /var/log/thefilename.log
是的,(
我想 grep 的字符串中有一个原始的和一些空格)
/etc/sudoers.d/user-can-grep
有这个内容:
user ALL=(root) NOPASSWD: /bin/grep "string I want (" /var/log/thefilename.log
Run Code Online (Sandbox Code Playgroud)
此 sudoers 文件归其所有root:root
并具有权限-r--r-----
服务器是 Ubuntu trusty 14.04.3 LTS。
我怎样才能使这项工作?
如何在 Debian (jessie) 上安装额外版本的 python。在 Ubuntu 上,我可以使用“deadsnakes”PPA,它会给我任何我想要的 python 版本,在命令中带有版本名称(例如python33
python 3.3)。这使我可以将它们全部安装在一起。我可以使用 virtualenvs 为特定版本安装特定的 python 包,而不会弄乱系统包。我维护了一些 python 库,它们需要在许多版本的 python 上工作。如果我安装了 python 二进制文件,那么 tox 将负责为每个 python 版本使用 virtualenvs。
那么 Ubuntu 死蛇 PPA 的 debian 版本是什么?
更新我想安装 python:2.6、2.7、3.3、3.4 和 3.5。
我有一个很大的文本文件,我只想查看其中的一些行。我想要的第一行与 regex 匹配R
,当该行与 regex 匹配时S
,我不关心该行或任何后续行。中间的线将不匹配R
。有没有办法在 bash 命令的命令行上执行此操作,以便我可以将输出通过管道传输到某个地方?
我用来od
打印文件/标准输入/字符串的八进制或十六进制。这让我可以看到标准输入的 ASCII 或 UTF-8 编码值。
但我们不再生活在 ASCII 世界了。是否有任何命令可以打印出(假设)utf-8 编码输入的 unicode 值/代码点?我想知道我看到的是什么 unicode 字符?
在 bash 脚本中,我调用另一个程序,但我想使用命令行选项配置该程序。以下作品:
\nAREA_ARG=""\nif __SOME_SETTING__ ; then\n AREA_ARG=" --area us,ca "\nfi\n\nprocess_data -i /some/path $AREA_ARG\n
Run Code Online (Sandbox Code Playgroud)\n即 bash 执行process_data -i /some/path
, 或process_data -i /some/path --area us,ca
。
然而shellcheck
抱怨!
$ shellcheck test.sh \n\nIn test.sh line 7:\nprocess_data -i /some/path $AREA_ARG\n ^-------^ SC2086: Double quote to prevent globbing and word splitting.\n\nDid you mean: \nprocess_data -i /some/path "$AREA_ARG"\n\nFor more information:\n https://www.shellcheck.net/wiki/SC2086 -- Double quote to prevent globbing ...\n
Run Code Online (Sandbox Code Playgroud)\n我理解原理,但我希望/需要变量在空间上分割,以便process_data
获得 2 …
bash ×1
command-line ×1
debian ×1
debugging ×1
python ×1
shell-script ×1
shellcheck ×1
sudo ×1
text ×1
unicode ×1