我们曾考虑不对 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 更有意义。
在 bash 中将 IDN(例如 ?????????.??)转换为 Punycode 的最简单方法是什么?
我想知道登录 SSH 会话时使用了哪个密钥。我想将密钥与本地数据库相关联,并将电子邮件发送到与密钥对应的地址。
第一步是找出正在使用的密钥。
我写了一个 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) 我经常编写 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)
但有更好的方法吗?
我需要定期远程检查 Linux 文件系统是否安装在许多服务器上只读。在这种情况下,我可以使用的唯一工具是常用的 CLI 脚本语言(BASH/Perl/Python)、SSH 和 SNMP。
到目前为止,我的想法是:
SNMP 方法是我能想到的最好/最干净的方法,但是我不知道如何执行此操作,因为 CLI SNMP 似乎是一场噩梦,特别是如果我需要通过决策过程来查找基于给定的挂载点。
理想情况下,我想仅使用 BASH(包括 sed/awk/grep 等)和 SNMP 来解决这个问题,但需要一些关于从哪里开始的指导!已经在所有相关服务器上为 v2 安装和配置了 snmpd。
此脚本的最终用途将作为 Nagios 命令。
非常感谢您的帮助!
注意 我们已经有 cacti/nagios 设置监控 100 台服务器,我在最初发布时忘记提及这一点!
我想编写一个 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,但我想知道是否可以执行上述操作?谢谢。
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 执行相同的搜索。因此,在单个命令中,我想执行以下操作:
我已经从这些日志文件夹中运行了以下命令。但看起来每个文件夹都需要无限的时间。
找 。-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) 我有三个后台进程,这就是我所拥有的:
[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)
那些“”、“+”、“-”是什么意思?以前从未注意到这些,我猜它总是“+”?