标签: bash

不为 Linux 用户使用默认主要组有什么影响?

我们曾考虑不对 RHEL 用户使用默认主要组。我的意思是默认:

User: melbin
Primary group: melbin
Run Code Online (Sandbox Code Playgroud)

我们将改为执行以下操作:

User: melbin
Primary group: webmasters
Run Code Online (Sandbox Code Playgroud)

我们的目标是让用户更轻松地共享内容,因为人们sg在处理共享文件时似乎忘记了。我们认为这比sg在登录时自动创建 shell 更有意义。

linux redhat bash user-management

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

如何在 bash 中将 IDN 转换为 Punycode?

在 bash 中将 IDN(例如 ?????????.??)转换为 Punycode 的最简单方法是什么?

linux bash idn

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

如何找出用于登录 SSH 会话的密钥

我想知道登录 SSH 会话时使用了哪个密钥。我想将密钥与本地数据库相关联,并将电子邮件发送到与密钥对应的地址。

第一步是找出正在使用的密钥。

ssh bash

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

Bash-Scripting - Munin 插件不起作用

我写了一个 munin-plugin 来计算 lighttpd 的 http-statuscodes。剧本:

#!/bin/bash

######################################
# Munin-Script: Lighttpd-Statuscodes #
######################################

##Config
# path to  lighttpd access.log
LIGHTTPD_ACCESS_LOG_PATH="/var/log/lighttpd/access.log"
# rows to parse in logfile (higher value incrase time to run plugin. if value to low you may get bad counting)
LOG_ROWS="200000"
#
#munin
case $1 in
   autoconf) # check config
        AVAILABLE=`ls $LIGHTTPD_ACCESS_LOG_PATH`
        if [ "$AVAILABLE" = "$LIGHTTPD_ACCESS_LOG_PATH" ]; then
           echo "yes"
        else
           echo "No: "$AVAILABLE
           echo "Please check your config!"
        fi
        exit 0;;
   config) # graph config
        cat …
Run Code Online (Sandbox Code Playgroud)

munin bash lighttpd shell-scripting

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

防止 sudo、apt-get 等将粘贴的输入吞入 STDIN?

我经常编写 wiki 说明以在 Ubuntu(目前为 11.10 Oneiric)上安装各种服务器包。它们总是涉及以下内容:

sudo apt-get install -y postfix
sudo cp ~/siteconfig/etc/postfix/main.cf /etc/postfix
Run Code Online (Sandbox Code Playgroud)

但是当您将其剪切并粘贴到终端时,sudo、apt-get 或某些子shell 会随机吞下后续的输入行,并且只会apt-get install发生这种情况。

有没有办法让它更易于剪切和粘贴?我想我可以用

cat > script <<EOF
apt-get install -y postfix
cp ~/siteconfig/etc/postfix/main.cf /etc/postfix
EOF
sudo sh ./script
Run Code Online (Sandbox Code Playgroud)

但有更好的方法吗?

scripting bash sudo stdin

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

远程检查只读文件系统

我需要定期远程检查 Linux 文件系统是否安装在许多服务器上只读。在这种情况下,我可以使用的唯一工具是常用的 CLI 脚本语言(BASH/Perl/Python)、SSH 和 SNMP。

到目前为止,我的想法是:

  • 共享 SSH 密钥并远程执行挂载命令,grep/awk-ing 用于给定挂载点上的 RO 标志。
  • 通过 SNMP 检查,虽然我不确定此信息是否可用或是否容易。
  • 尝试跨文件 SCP 或远程触摸文件。

SNMP 方法是我能想到的最好/最干净的方法,但是我不知道如何执行此操作,因为 CLI SNMP 似乎是一场噩梦,特别是如果我需要通过决策过程来查找基于给定的挂载点。

理想情况下,我想仅使用 BASH(包括 sed/awk/grep 等)和 SNMP 来解决这个问题,但需要一些关于从哪里开始的指导!已经在所有相关服务器上为 v2 安装和配置了 snmpd。

此脚本的最终用途将作为 Nagios 命令。

非常感谢您的帮助!

注意 我们已经有 cacti/nagios 设置监控 100 台服务器,我在最初发布时忘记提及这一点!

linux bash nagios snmp

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

在 bash 脚本中使用 sudo -i

我想编写一个 bash 脚本来在以普通用户身份登录时在 root 下执行一些任务。有可能有这样的东西吗?

#!/usr/bash

sudo -i

<multiple line perform all my sudo command>
...
...
...
exit

<back to my user command, continue some other task>
Run Code Online (Sandbox Code Playgroud)

当然,我可以在每一行都加上 sudo,但我想知道是否可以执行上述操作?谢谢。

bash sudo

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

我可以使用什么命令在 sendmail 日志中搜索涉及特定收件人的所有邮件详细信息。

CentOS 5.x | 发邮件

有时,我需要搜索 sendmail 传送日志以找出丢失邮件的原因。这通常涉及两个(或更多)步骤:

第 1 步:在 /var/log/maillog 中搜索用户的电子邮件地址。例如grep -i "someuser@recipientdomain.com" /var/log/maillog

这通常会返回如下内容:

  Jan 11 07:43:34 server-example sendmail[12732]: p937blksdh3: to=<someuser@recipientdomain.com>, delay=00:00:00, xdelay=00:00:00, mailer=esmtp, pri=102537, relay=mta.recipientdomain.com. [12.34.56.78], dsn=5.7.1, stat=Service unavailable
Run Code Online (Sandbox Code Playgroud)

第 2 步:然后我将获取唯一的消息名称(在本例中为 p937blksdh3)并进行搜索。例如:grep -i p937blksdh3 /var/log/maillog

我想将第 1 步和第 2 步合并为一个单行代码,并让它自动对其他 id 执行相同的搜索。因此,在单个命令中,我想执行以下操作:

  1. 在 sendmail maillog 中搜索特定字符串。
  2. 确定电子邮件的消息 ID(在上面的示例中,这是 p937blksdh3)。(我猜awk '{print $}'会被使用?)
  3. 搜索相同的日志,但搜索消息 ID(在上面的示例中基本上是grep -i p937blksdh3 /var/log/maillog
  4. 输出步骤 3 的结果。对其他消息 ID 重复此操作。

linux bash sendmail centos awk

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

无法在Linux中一次删除大量文件

我已经从这些日志文件夹中运行了以下命令。但看起来每个文件夹都需要无限的时间。

找 。-type f -exec rm -v {} \;

rwxrwxr-x  2 root     root      77881344 Mar 16 03:06 logs.123  
drwxrwxr-x  2 root     root     105709568 Nov 14 20:09 logs_15Nov2011  
drwxrwxr-x  2 root     root       6852608 Aug  1  2011 logs2  
drwxrwxr-x  2 root     root     286191616 Nov  2 08:40 logs_2Nov  
drwxrwxr-x  2 root     root      25206784 Nov 10 04:04 logs_del  
drwxrwxr-x  4 root     root       2686976 Oct  6 01:56 logs_delete  
drwxrwxr-x  2 root     root          4096 May 11  2011 logsMay112011  
drwxrwxr-x  2 root     root      69087232 Aug 29  2011 …
Run Code Online (Sandbox Code Playgroud)

linux bash logging

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

Shell 后台进程:终止消息中的字符是什么意思?

我有三个后台进程,这就是我所拥有的:

[1]   Done                    zcat jan.txt.gz > j
[2]-  Done                    zcat feb.txt.gz > f
[3]+  Done                    zcat mar.txt.gz > m
Run Code Online (Sandbox Code Playgroud)

那些“”、“+”、“-”是什么意思?以前从未注意到这些,我猜它总是“+”?

unix shell bash background-process

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