Articles of bash

在bash脚本中inotify不能使用ldapadd命令

我写了一个bash脚本,用于检测.ldif文件是否已经写入目录,如果写入,则执行ldapadd命令,然后删除该文件。 脚本如下: dir="/home/myuser/newldif/" while inotifywait -e create "$dir"; do ldapadd -w "ldappassword" -D "cn=Manager,dc=mydomain,dc=com" -f /home/myuser/newldif/user.ldif rm -rf /home/myuser/newldif/user.ldif done 这个脚本是这样执行的: nohup ./testscript & 目录newldif最初是空的。 将文件user.ldif复制到此位置时,脚本将执行,但会跳过ldapadd命令并执行rm命令。 另一方面,当我执行没有inotify的脚本(即我完全删除了while循环),它添加了ldap条目,然后删除该文件。 inotify语法有什么问题吗? slapd日志不显示任何错误。 nohup.out文件只显示以下输出: Setting up watches. Watches established. Setting up watches. Watches established. Setting up watches. Watches established. (每个“设置手表”语句是针对一个被删除的文件) 操作系统是CentOS 6.4,OpenLDAP版本是openldap-2.4.23。

在grep中的结果之间的换行符

我需要偶尔监视一下我在服务器上运行的蜘蛛。 我正在testing它,看它有多less迭代正在同时运行,并查看是否有任何挂起。 我使用这个: echo `ps -ewwo args | grep '^[^ ]*curl'` 输出全部在一行。 如果我改变了 echo `ps -ewwo args | grep -n '^[^ ]*curl'` 我得到行号,但输出仍然在一行。 我怎样才能把结果分解成不同的行? 作为一个testing,我做了一些类似的事情 grep "br" /home/user/www/index.php 它发现了许多实例并将它们分别输出,就像我希望的那样。

当后台ssh会话终止时,终止远程进程

所以现在我有一个bsh脚本,它使用ssh在远程机器上运行命令。 运行bash脚本的机器是Linux机器,远程机器是运行cygwin的Windows机器。 bash脚本包含以下几行 #!/bin/bash ssh -i key.pem user@ip "command1" & # some other commands here, not included because they're not relevant to question wait command1是一个长期运行的过程。 目前,当我在等待完成之前将Ctrl-C从我的bash脚本中取出时, command1仍在远程计算机上运行。 它基本上变得分离和不可控制。 当我按Ctrl-C时,我希望它终止,否则远程机器将散布许多command1实例,如果我不断提前终止我的脚本。 注意背景&是必要的,因为我想在命令运行时运行其他命令。 我已经尝试了几种方法 为伪terminal添加“-t -t”选项 添加下面的行希望将SIGINT传递给我的SSH会话 trap 'kill -INT -$$' SIGINT 我也做了陷阱命令的变化,我得到了一个PID子列表,并通过它遍历每一个。 那也行不通。 SIGHUP也没有工作。 到目前为止,我得到command1来终止的唯一方法是如果我只是运行ssh命令 ssh -t -i key.pem user@ip "command1" 没有背景,并在同一个terminal键入Ctrl-C。 如果我从其他terminal发送SIGINT或SIGHUP,它甚至不能工作。 通过后台ssh终止远程命令的正确方法是什么? 注意只有当远程机器是cygwin环境时才会发生这种情况。

鸽舍的报价没有被执行

一旦用户达到他们的配额的一定百分比,我想运行dovecot自定义脚本。 问题是,无论我尝试dovecot似乎并没有执行我的bash脚本。 90 quota.conf plugin { quota_warning = storage=95%% quota-warning 95 %u quota_warning2 = storage=10%% quota-warning 10 %u } service quota-warning { executable = script /var/www/lighttpd/mail/scripts/quotaWarning.sh user = root unix_listener quota-warning { user = dovecot mode = 0666 } } 我已经尝试与&没有用户/模式/组参数。 我也尝试过所有不同版本的root / mail / dovecot用户,但都没有运气。 quotaWarning.sh #!/bin/sh PERCENT="${1}" USER="${2}" cat <<EOF | /usr/libexec/dovecot/deliver -d […]

禁用所有出站networking

我似乎无法find关于如何完全禁用所有networking的任何信息。 本质上,我想翻转交换机的任何出站或入站networking。 就像我电脑上的wifibutton,当我切换时,什么都不能进来,什么都不能出去。 我能想到的唯一的东西(但我不知道它是否会起作用)是这样的: sudo service network-manager stop 这会做诡计吗?

WP-CLI不能从cronjob运行

我做了一个使用WP-CLI的bash脚本,并打算从cronjob运行。 它从SSH运行良好,但通过cron运行时失败。 在debugging过程中,我发现这是WP-CLI部分没有运行。 它根本没有输出。 我只用脚本的WP-CLI部分进行了testing。 我已经确认WP-CLI确实是这个问题: /home/username/script/test.sh cd /var/www/domain.com/ && wp post create –post-title="test" post-content="testing" –post-status=future 以下是通过crontab -e从用户帐户中添加的cronjob示例:(设置为每分钟运行以进行testing) */1 * * * * sh /home/username/script/test.sh 如果从SSH运行,脚本运行完美,但是从cron运行时脚本没有输出。 我试过添加| mail -s [email protected] | mail -s [email protected]到cronjob条目。 它将输出发送到我的电子邮件,但wp-cli命令没有输出。 我也尝试添加我的用户名到时间数据和命令之间的cronjob条目,以确保它是作为我的用户运行。 此外,我试图编辑bash脚本,并将其更改为mail -s "cool story bro" [email protected] ,并且工作正常,它完全忽略了WP-CLI。 我一直在寻找大约12个小时的答案。 我最近发现这个答案给别人的问题,我想这可能会有所帮助,但我不知道如何实现它。 https://serverfault.com/a/95736 我刚刚find了这个答案给别人的问题,似乎是实现他人的答案的方式,但它没有奏效。 https://serverfault.com/a/473961我正是用他发布的。 顺便说一下,这是在最新的Ubuntu服务器上运行。 请说明问题所在,以及如何解决。 或者只是如果你对此有所了解,评论什么的,我现在很绝望。

bash:将date转换为unix时间戳更改时间戳

在$ company的xen-servers(DOM0或DOMU)上运行以下命令会给我一个负数,在每个其他系统零(0)(即使在我的cygwin中)。 date -d "1970-01-01T00:00:00" "+%s" $TZ未设置, /etc/localtime与/usr/share/zoneinfo/UTC文件相同 date在GNU coreutils的版本8.12中。 这里出了什么问题? 什么额外的信息可能需要?

密码检查bash脚本调用期望

背景:我必须将一个文件从一台服务器复制到testing环境中的100多台服务器。 一旦文件被复制,它需要对文件的权限进行更改/validation。 这些都是Linux服务器。 他们中的大多数具有相同的login密码,但有些可能不会。 我需要在我的bash脚本中做一个循环的帮助。 这实际上是在期待。 我想做的更好或修复的地方是一些事情 预期密码的部分。 (*部分),则应在1次密码尝试失败后退出脚本,并将该IP转储到名为“fail.txt”的文本文件 理想情况下,如果没有连接到服务器,应该有一块也将IP转储到fail.txt。 我试图写一个循环的密码片,但我不确定这种思维方式是否成立。 我试着添加另一个“期望密码”,以为如果第二次得到提示,就退出,但是我很难让这个工作成功。 谢谢! #!/bin/bash while read ip; do sleep 2 expect <<- DONE set timeout 1 spawn scp yoman.txt root@$ip:/felixtemp if above command fails, dump the IP to fail.txt, otherwise continue expect yes/no { send yes\r } expect Password: { send aaaaaa\r } #if this […]

如何从lshw输出获得bash shell中所需的值?

我想从lshw输出中提取信息: -cpu product: …… 我只想要这个-cpu的产品信息。 我怎么用awk或sed来做到这一点?

奇怪的文件名编码

我有一个关于文件名的奇怪问题。 总结的情况是: [username@xxx tmp]$ ll -rw-r–r–. 1 xxx xxx 42694 8. Jun 19:56 12287_KKL_Messegerät_EF_30.1.pdf -rw-r–r–. 1 xxx xxx 42694 8. Jun 19:56 12287_KKL_Messegerät_EF_30.1.pdf 实际上,这两个文件的文件名和内容是相同的。 文件的来源包含一些相似的文件。 重现,这里是一个例子: $ mount /dev/vda1 on / type ext4 (rw,noatime,nodiratime,grpquota) $ touch ä $ ll ä -rw-r–r–. 1 xxx xxx 0 8. Jun 19:59 ä 所以一般来说,变音人工作。 现在,我删除目录中的文件,并将怪异文件复制到空目录: [username@xxx tmp]$ rm * […]