小编Mit*_*tch的帖子

什么是精灵魔法?

我之前看过关于 ELF 魔法的讨论,最近是在这个安全堆栈交换问题中的评论。我之前已经看到它提到过,我在我自己的引导日志中也看到过它。但我不确定它是什么。

elf 上的手册页有点超出我的理解,因为我不使用 C 或更低级别的语言。

作为使用 Linux 作为日常操作系统的人,ELF 是什么?

elf

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

vim 可以以 root 身份编辑远程文件吗?

我发现这个问题解释了如何使用 vim 编辑远程文件:

vim scp://user@myserver[:port]//path/to/file.txt
Run Code Online (Sandbox Code Playgroud)

是否可以sudo在远程主机上以 root(通过)身份执行此操作?

我已经尝试在远程主机上创建一个具有 root 权限的文件并使用上述内容进行编辑。Vim 可以看到内容,可以编辑它,可以保存它,但在远程主机上没有任何变化(可能是因为 vim 只是保存它的临时文件,然后把它交给 scp 放回去?)

使用我的用户保存的文件执行此操作时,它的行为符合预期。

我的 SSH 使用密钥进行身份验证,并且远程服务器具有用于我的 sudo 访问的 NOPASSWD

这个问题是类似的,但唯一的投票答案使用了 puppet,这绝对不是我想要使用的。


编辑:为了回应@drewbenn 在下面的评论,这是我的完整编辑过程:

vim scp://nagios//tmp/notouch
Run Code Online (Sandbox Code Playgroud)

/tmp/notouchroot拥有的文件在哪里,我看vim很快就显示

:!scp -q 'nagios:/tmp/notouch' '/tmp/vaHhwTl/0'
Run Code Online (Sandbox Code Playgroud)

这会自动消失以产生带有文本的空黑屏

"/tmp/vaHhwTl/0" 1L, 12C
Press ENTER or type command to continue
Run Code Online (Sandbox Code Playgroud)

按 Enter 允许我编辑文件

保存弹出和开头一样的scp命令,很快自动消失(很难及时读取但是scp和/tmp/...文件肯定在那里)

vim remote sudo

11
推荐指数
2
解决办法
3089
查看次数

如何将root无法访问的目录复制到只有root才能访问的目录?

我在 nfs 挂载上有一个目录,它在服务器上位于 /home/myname/.rubies

Root 无法访问此目录:

[mitchell.usher@server ~]$ stat /home/mitchell.usher/.rubies
  File: `/home/mitchell.usher/.rubies'
  Size: 4096            Blocks: 8          IO Block: 32768  directory
Device: 15h/21d Inode: 245910      Links: 3
Access: (0755/drwxr-xr-x)  Uid: (  970/mitchell.usher)   Gid: (  100/   users)
Access: 2016-08-22 15:06:15.000000000 +0000
Modify: 2016-08-22 14:55:00.000000000 +0000
Change: 2016-08-22 14:55:00.000000000 +0000

[mitchell.usher@server ~]$ sudo !!
sudo stat /home/mitchell.usher/.rubies
stat: cannot stat `/home/mitchell.usher/.rubies': Permission denied
Run Code Online (Sandbox Code Playgroud)

我试图从该目录中复制一些/opt只有 root 有权访问的内容:

[mitchell.usher@server ~]$ cp .rubies/ruby-2.1.3/ -r /opt
cp: cannot create directory `/opt/ruby-2.1.3': Permission denied

[mitchell.usher@server ~]$ …
Run Code Online (Sandbox Code Playgroud)

root permissions file-copy

11
推荐指数
2
解决办法
2096
查看次数

通过远程 ssh 命令获取输出时,如何让“yum list”输出保持在一行?

当我通过 SSH 连接到一台机器ssh machine并运行yum list它时,它会输出按预期安装的所有内容,重要的是每个项目都在一行上,如下所示:

xz-devel.i386                                                                                                        4.999.9-0.3.beta.20091007git.el5                                                                  base            
xz-devel.x86_64                                                                                                      4.999.9-0.3.beta.20091007git.el5                                                                  base            
xz-libs.i386                                                                                                         4.999.9-0.3.beta.20091007git.el5                                                                  base            
xz-lzma-compat.x86_64                                                                                                4.999.9-0.3.beta.20091007git.el5                                                                  base            
Run Code Online (Sandbox Code Playgroud)

但是在远程执行ssh machine 'yum list'或什至通过管道将其传输到 grep 而在服务器上时yum list | grep xz -C 3,输出的行被“截断”并变得更短,如下所示:

xz-devel.i386                              4.999.9-0.3.beta.20091007git.el5
                                                                       base     
xz-devel.x86_64                            4.999.9-0.3.beta.20091007git.el5
                                                                       base     
xz-libs.i386                               4.999.9-0.3.beta.20091007git.el5
                                                                       base     
xz-lzma-compat.x86_64                      4.999.9-0.3.beta.20091007git.el5
                                                                       base     
Run Code Online (Sandbox Code Playgroud)

我怎样才能使线条的大小不像这样缩小?我的最终愿望是将其通过管道传输到tee,然后通过 ansible 对所有主机的输出文件进行一些处理。

这似乎是由于某种“虚拟终端”作为 SSH/管道的一部分而发生的,因为如果我缩小我的终端大小,在运行时断线,我可以获得相同的行为yum list。因此,我假设管道的添加以某种方式告诉yum list终端的宽度仅为 X 列

yum ssh terminal pipe

10
推荐指数
1
解决办法
8574
查看次数

清空文件而不使用 grep 随后将其视为二进制文件

目前我有netcat管道输出tee,正在写入 output.txt

nc -l -k -p 9100 | tee output.txt
Run Code Online (Sandbox Code Playgroud)

我想监视这个输出,所以我tail -f | egrep -i 'regex'通过 PuTTY观看它,这样我只能看到相关的位。

我时不时地想清除输出文件。问题出现了,如果我这样做> output.txt然后再次尝试tail -f | egrep ...我没有输出。如果我对文件进行 grep,尽管知道应该有匹配项(因为cat output.txt正确地吐出文件),但我没有得到匹配项

mitch@quartz:~$ grep output.txt -e 'regex'
Binary file output.txt matches
Run Code Online (Sandbox Code Playgroud)

虽然清空之前output.txt 上的相同命令工作正常。

基本上:>grep我认为我的文件是一个二进制文件,它不会正确搜索。有没有更好的方法来清除文件?

shell grep text-processing

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

哪里可以下载 coreutils 的二进制文件?

我正在尝试在 android 设备上安装一些命令(即file更好的版本ls),我正在寻找它的 ARM 二进制文件(即 5TE 架构),但我找不到下载它们的地方. 谷歌搜索诸如“arm ls binary”或“ls binary”之类的东西给了我除我想要的之外的一切。

有没有一个地方可以找到二进制文件?

binary

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

打印文件夹中所有文件的第一行和最后一行

我有一大堆的是那些获得覆盖日志文件(file.log.1file.log.2等)。当我将它们从制作它们的设备复制到我的本地机器上时,我丢失了原始时间戳。所以我想把它们按时间顺序排列。问题是我不一定知道哪个是最新的,哪个是最旧的。

我希望能够做的是,如果所有日志都在一个目录中,则打印如下内容:

file: file.log.1
first line: [first line that isn't whitespace]
last line: [last line that isn't whitespace]
Run Code Online (Sandbox Code Playgroud)

我可以编写一个 python 脚本来执行此操作,但如果可能的话,我更愿意使用 linux 内置程序来执行此操作。这是 awk/sed 的工作吗?或者这对于脚本语言来说真的更好吗?如果 awk/sed 是肯定的,你将如何去做?

我通过搜索找到了这个 awk 命令,但它只接受一个文件名,并且会打印最后一行的任何内容(并且末尾可能有可变数量的空行)

awk 'NR == 1 { print }END{ print }' filename
Run Code Online (Sandbox Code Playgroud)

shell awk

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

Systemd - 反转单元文件中的条件?

我正在尝试创建一个 systemd 服务,该服务仅在文件系统上存在某个文件时才启动。

如果我使用ConditionPathExists这将使服务仅在有问题的文件存在时启动,这与我想要的行为相反。

有没有办法反转这些条件?

systemd systemd-unit

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

标签 统计

shell ×2

awk ×1

binary ×1

elf ×1

file-copy ×1

grep ×1

permissions ×1

pipe ×1

remote ×1

root ×1

ssh ×1

sudo ×1

systemd ×1

systemd-unit ×1

terminal ×1

text-processing ×1

vim ×1

yum ×1