小编Spr*_*ips的帖子

带引号的 ssh 命令

我有一个奇怪的错误,我一直无法找到任何关于此的信息。我想使用以下命令更改用户评论。

$ sudo usermod -c "New Comment" user
Run Code Online (Sandbox Code Playgroud)

这将在登录到服务器时工作,但我想在 20 多台服务器上实现自动化。通常我能够使用一个列表并遍历服务器并运行命令,但在这种情况下我会收到错误消息。

$ for i in `cat servlist` ; do echo $i ; ssh $i sudo usermod -c "New Comment" user ; done 
serv1
Usage: usermod [options] LOGIN

Options:
lists usermod options

serv2
Usage: usermod [options] LOGIN

Options:
lists usermod options
.
.
.
Run Code Online (Sandbox Code Playgroud)

当我运行这个循环时,它会抛出一个错误,比如我错误地使用了命令,但它会在单个服务器上运行得很好。

翻翻SSH手册页我曾尝试-t-t -t标志,但那些没有工作。

我已经成功地perl -p -i -e在类似的循环中使用来编辑文件。

有谁知道我无法循环的原因?

shell ssh quoting

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

括号中的一系列数字的 Grep

我试图仅针对括号内的一系列数字进行 grep。我当前的 grep 会将括号内的所有内容拉出,但我只想要[0001-9999]. 我怎样才能修复我的 grep 来做到这一点?

我已经尝试了几个不同的版本,(?<=\()[0001-9999](?=\))但他们没有返回任何东西

$ cat /tmp/output
This is R3trans version 6.26 (release 745 - 24.03.17 - 20:17:03).
R3trans finished (0000).
R3trans finished (0001).
R3trans finished (9999).
05.03.2018 16:30:02
enserver, EnqueueServer, RED, Running, 2018 02 27 09:15:52, 151:14:10, 19069
Run Code Online (Sandbox Code Playgroud)

电流输出

$ cat /tmp/output | grep -Po '(?<=\().*(?=\))'
release 745 - 24.03.17 - 20:17:03
0000
0001
9999
Run Code Online (Sandbox Code Playgroud)

期望输出

$ cat /tmp/output | grep -Po '(?<=\().*(?=\))'
0001
9999
Run Code Online (Sandbox Code Playgroud)

grep regular-expression

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

标签 统计

grep ×1

quoting ×1

regular-expression ×1

shell ×1

ssh ×1