小编Zor*_*che的帖子

擦除硬盘的最后 1MB

是否有一个简单的命令可以用来将硬盘的最后 1MB 清零?

对于驱动器的开始,我会dd if=/dev/zero of=/dev/sdx bs=1M count=1seekdd的选项看起来很有希望,但有人有一种简单的方法来确定我应该寻求多远?

我有一个硬件 RAID 设备,它在驱动器的末端存储一些 RAID 配置。我需要 RAID 设备将驱动器视为未配置,因此我想删除 RAID 配置而不必花时间对驱动器进行完全擦除。我有十几个 2TB 驱动器,完全擦除所有这些驱动器需要很长时间。

linux partition

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

为什么 SSH 会为 IP 地址添加 known_host 条目?

我有一个名为 nms.example.org 的主机。在我的/etc/ssh/ssh_known_hosts我有一个带有 RSA 密钥的主机条目。这个条目和所有其他条目都由我的配置管理系统管理。

nms.example.org ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDZqfmVPs/XqTS...
Run Code Online (Sandbox Code Playgroud)

此外,我在我/etc/ssh/ssh_config的特定主机中有一个条目,用于设置主机密钥别名。如果我正确理解一切,这意味着只有nms.example.org应该重要。

Host nms.example.org nms.example nms
    HostKeyAlias nms.example.org
    HostName nms.example.org
Run Code Online (Sandbox Code Playgroud)

那么,为什么当我从客户端连接时,ssh 似乎仍然认为它需要使用主机的IP向我的每个用户 known_hosts 添加一个密钥?

$ ssh nms -v
OpenSSH_6.0p1 Debian-4+deb7u4, OpenSSL 1.0.1e 11 Feb 2013
debug1: Reading configuration data /home/zoredache/.ssh/config
debug1: /home/zoredache/.ssh/config line 61: Applying options for *
debug1: /home/zoredache/.ssh/config line 71: Applying options for *
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 84: Applying options for nms
debug1: /etc/ssh/ssh_config line 363: Applying options …
Run Code Online (Sandbox Code Playgroud)

ssh

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

kernel.printk 值说明

在 Debian 5 和 6 之间, kernel.printk 中的默认建议值/etc/sysctl.conf从 更改kernel.printk = 4 4 1 7kernel.printk = 3 4 1 3。我知道第一个值对应于控制台的内容。接下来的 3 个值是什么?

数值是否与系统日志日志级别具有相同的含义?或者他们有不同的定义?

我是否在搜索中遗漏了一些文档,或者是找出内核源代码的唯一位置。

linux logs kernel sysctl

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

Grep 多模式否定匹配

所以我有一堆使用标准日志格式的 Apache 日志。我想获取所有不是来自网络爬虫的日志行。

所以可以说我有一个文件robot_patterns,其中包含以下条目

Googlebot
msnbot-media
YandexBot
bingbot
Run Code Online (Sandbox Code Playgroud)

如果我运行该命令,grep -f robot_patterns *.log我将通过与上述模式匹配的机器人获取所有条目。我的实际列表有大约 30 个我希望忽略的机器人和代理条目。

但我想找到所有不是来自 bots的条目。所以我尝试grep -v -f robot_patterns *.log,grep 没有返回任何结果。这不是我所期望或想要的,我也没有找到一种明显的方法来获得我想要的东西。当使用该-v选项与文件中的多个模式结合使用时,grep 仅在匹配每个模式时才返回匹配行。

grep

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

在没有子shell的情况下迭代bash中命令的输出

我想在不创建子 shell 或使用临时文件的情况下遍历命令的输出。

我的脚本的初始版本看起来像这样,但这不起作用,因为它创建了一个子外壳,并且exit命令终止子外壳而不是所需的主脚本。它是配置策略路由的更大脚本的一部分,如果检测到会导致路由失败的情况,它就会停止执行。

sysctl -a 2>/dev/null | grep '\.rp_filter' | while read -r -a RPSTAT ; do

  if [[ "0" != "${RPSTAT[2]}" ]] ; then
    echo >&2 "RP Filter must be disabled on all interfaces!"
    echo >&2 "The RP filter feature is incompatible with policy routing"
    exit 1
  fi
done
Run Code Online (Sandbox Code Playgroud)

因此,建议的替代方法之一是使用这样的命令来避免使用子shell。

while read BLAH ; do echo $BLAH; done </root/regularfile
Run Code Online (Sandbox Code Playgroud)

所以在我看来,我也应该能够使用这样的命令来避免子shell,并且仍然从我想要的程序中获得输出。

while read BLAH ; do echo $BLAH; done <(sysctl -a 2>/dev/null | grep '\.rp_filter')
Run Code Online (Sandbox Code Playgroud)

不幸的是,使用该命令会导致此错误。

-bash: …
Run Code Online (Sandbox Code Playgroud)

scripting bash io-redirection

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

读取前 Bash 刷新标准输入

在 bash 中是否有一种简单的方法来清除标准输入?

我有一个通常运行的脚本,并且在脚本读取中的某一点用于获取用户的输入。问题是大多数用户通过从基于 Web 的文档复制和粘贴命令行来运行此脚本。它们经常包含一些尾随空格,或者更糟的是,示例命令后面的一些文本。我想调整脚本以在显示提示之前简单地摆脱额外的垃圾。

linux scripting bash

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

从 /etc/shadow 中提取日期

该文件/etc/shadow有几个日期字段,表示为自 1970 年 1 月 1 日以来的天数。是否有一种简单的方法可以用来获取用户列表和上次密码更改的日历日期以及到期日期?

参考:人影(5)

linux users shadow

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

在基于 Debian 的系统上查找所有已安装软件包的来源

我试图找到一种很好的方法来为存储在我的系统上的每个包找到可以轻松解析的存储库。

背景故事:

我有 Debian wheezy 系统并设置了 wheezy-backports 存储库,因此我可以获得更新版本的软件包。我在固定配置中犯了一个错误,我没有注意到。我*为 backports 存储库固定。几周后,我发布了一个apt-get -y dist-upgrade并没有引起注意,而是将更多的软件包升级到了我感兴趣的 wheezy-backports。

我有备份,所以我可以轻松地轻松恢复东西,但是这种情况让我真的很想找到一种方法来找到每个包来自哪个存储库。

关于我迄今为止发现的最接近的方法是这样的。 apt-cache policy $(dpkg -l | awk '/ii/ {print $2}' ). 这有点接近,但理想情况下,我希望为所有包获得这样的报告。

Package<tab>Version<tab>Origin<tab>Suite
Run Code Online (Sandbox Code Playgroud)

其中 Origin/Suite 是存储库发布文件中的值。

debian dpkg apt

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

如何使用 NTable 进行伪装

我将如何在 NFTables 中实现像 iptables 这样的伪装规则:

iptables -t nat -A POSTROUTING -s 10.5.6.0/24 -o eth0 -j MASQUERADE
Run Code Online (Sandbox Code Playgroud)

找了下,不知道怎么设置输出接口

iptables nftables

5
推荐指数
2
解决办法
8587
查看次数

确定字体,并确定正确的符号

我有一个 X11 程序,可以让您设置字体。它显然接受“标准” X Logical Font Description。这个符号相当晦涩,虽然我链接到的文档提到了它,但它实际上并没有描述语法。是否有某种字体选择工具可以提供有效字体列表,并允许我从列表中选择一种字体,并指定大小等,然后打印出此符号?

X 逻辑字体说明

X11 核心字体实例通常使用称为 X 逻辑字体描述 (XLFD) 的符号指定。XLFD 以破折号“-”开头,由破折号分隔的十四个字段组成,例如:

-adobe-courier-medium-r-normal--12-120-75-75-m-70-iso8859-1

fonts x11

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

使失败的 SSH 转发成为致命错误

我有一个脚本,它连接到远程主机以通过 SSH 复制一些文件。我必须连接到侦听端口 873 的 rsync 守护程序。为此,我有一个像这样的 ssh 配置。

Host blah
    LocalForward 10873 127.0.0.1:873
    Hostname 10.2.4.1
Run Code Online (Sandbox Code Playgroud)

不幸的是,由于此脚本的时间安排,有时当它尝试建立 SSH 会话时,另一个类似的脚本可能会将端口打开到不同的主机。

如果我在另一个 ssh 会话打开时连接,我会收到明显的消息Address already in use

me@local:~$ ssh blah
bind: Address already in use
channel_setup_fwd_listener: cannot listen to port: 10873
Could not request local forwarding.
Linux remote 2.6.26-2-amd64 #1 SMP Tue Jan 25 05:59:43 UTC 2011 x86_64
motd...
remote:~$ 
Run Code Online (Sandbox Code Playgroud)

我想要发生的是让 SSH 客户端立即以退出代码退出,这样我就可以将一些逻辑放入我的脚本中以报告失败,而不是尝试针对转发到错误主机的端口运行任何命令。

scripting ssh

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

标签 统计

linux ×4

scripting ×3

bash ×2

ssh ×2

apt ×1

debian ×1

dpkg ×1

fonts ×1

grep ×1

io-redirection ×1

iptables ×1

kernel ×1

logs ×1

nftables ×1

partition ×1

shadow ×1

sysctl ×1

users ×1

x11 ×1