我有一个定义的资源types来追加一个文件,如果它不存在,如下所示: define appendLineToFile($file, $line, $user) { exec { "echo \"\\n$line\" >> \"$file\"": path => '/bin', unless => "grep -Fx \"$line\" \"$file\"", user => $user, } } 它在大多数情况下都很有效,但是在下面这种情况下,双引号必须被两次转义(这非常令人费解)。 appendLineToFile { 'Add http_proxy & https_proxy to sudoers': file => '/etc/sudoers', line => "Defaults env_keep += \\\"http_proxy https_proxy\\\"", user => root, } 有没有办法改变它不需要转义的定义的资源types? 例如 line => "Defaults env_keep […]
可能重复: 当postfix队列为空时断开调制解调器 此脚本代码检查postfix邮件队列是否为空,如果为true,则断开与调制解调器的连接。 #!/bin/sh postqueue -p|grep empty if [ $? -eq 0 ]; then killall wvdial fi 我需要多次运行它,直到邮件队列变空。 我怎样才能循环呢? 也许放置一个else从postqueue -p | grep空行返回执行脚本? 我知道这可以是简单的,但不是在bash脚本的专家,所以我需要帮助来完成这个代码。
任何bash大师知道如何把下面的命令变成一个class轮? trutch:$ touch app/views/pages/_sponsors.html.erb trutch:$ touch app/views/pages/_donations.html.erb trutch:$ touch app/views/pages/_volunteers.html.erb 我希望能够做到这样的事情: trutch:$ touch app/views/pages/[ARRAY].html.erb 如果你有像这样的bash技巧的任何来源,也将不胜感激。
似乎Apache至less需要读取和执行path的所有子目录的权限才能提供目录中的文件。 有没有人有脚本或单线可以validation这一点? 我想也许是一个bash脚本,将su – apache ,然后尝试导航到path中的每个目录。 我会尝试一些东西,如果我想出了一些有用的东西,我会发布。
我在这里做了这个脚本,并得到错误 IA-exporto.sh:13:wget:找不到 我试图改变“通过`和混合在一起,重新排列,但它只是不会做.. #!/bin/bash UNAME="maximilian" PWD="password" DATE=`date +%Y\-%m\-%d` DAY=`date +%d` MONTH=`date +%m` YEAR=`date +%Y` PATH="/root/test/IA" URL="http://www.my-corpo.com/_backend/index.php?date=$YEAR-$MONTH-$DAY&view=csv" COMMAND="wget –user=$UNAME –password=$PWD $URL -O $PATH-$DATE.csv" $COMMAND 我甚至试图设置每个variables之前和之后“,所以它看起来像 COMMAND="wget –user="$UNAME" –password="$PWD" "$URL" -O "$PATH"-"$DATE".csv" 但是当我回声$ COMMAND它看起来非常正确,事实上,当我复制它,并插入它,它的工作..
所以我做了一个小脚本来监视我所服务的目录中的任何已经改变的PHP文件。 它的目的是从crontab运行每5分钟,并发送给我任何更改,以便我可以检查它们。 机器上有很多网站在运行,我希望能够看到任何新的脚本,以确保没有任何我不喜欢的外观,如果你知道我的意思。 问题是脚本从命令行运行时运行正常,但是它不能从crontab正确运行。 脚本包含在下面: rm /root/sec/email find /var/www/ -name '*.php' -not -name '*.tpl.*' -type f -mtime -0.005 -exec ls -al {} \; > /root/sec/email if [[ -s /root/sec/email ]] ; then mail -s "PHP Change Alert on FSE4" [email protected] [email protected] < /root/sec/email echo "It ran" >> /root/sec/log else echo "It did not run" >> […]
我写了一个包含以下内容的shell脚本: #!/bin/bash value=`cat test.txt` echo "Output: $value" >> currentOutput.txt 通过在shell中执行这个脚本,它会正确地写入currentOutput.txt中的值。 通过在/ etc / crontab上执行这个脚本,这个文件只会被填充“Output:”。 shell和crontab中的执行用户是root。 另外从“currentOutput.txt”,“test.txt”和脚本的所有者是根。 我只是想知道正常执行和crontab执行之间的不同输出。 这是我的crontab项目: */5 * * * * root /bin/sh /var/www/testscript.sh 有什么build议么?
我有这样的脚本: /root/bin/script1.sh 把这行放在.bashrc里面 /root/bin/script1.sh & script1.sh不运行 – 问题是&。 没有“&”脚本运行完美
我有下面的脚本,基本上我想要做的是连接到各种服务器。 查看有多less个打开的文件,如果超过5万个,就发送一封电子邮件。 但最后一个服务器,我需要这个检查超过40万。 我有一个问题,或没有工作。 如果我按原样运行这个当前脚本,即使没有任何限制被触发,我也会收到警报邮件。 请用我的OR语句帮助我。 我在命令行输出显示: Alert Server Issue AlertError S1:6326 S2:6355 S3:6242 S4:7171 S5:4694 S6:5284 S7:3973 S8:308432 剧本: #!/bin/bash S1_IP=72.15.97.13 S2_IP=72.15.97.14 S3_IP=72.15.97.15 S4_IP=72.15.97.16 S5_IP=72.15.97.17 S6_IP=72.15.97.18 S7_IP=72.15.97.19 S8_IP=72.15.97.20 RESULT1=$(ssh test@$S1_IP lsof | wc -l) RESULT2=$(ssh test@$S2_IP lsof | wc -l) RESULT3=$(ssh test@$S3_IP lsof | wc -l) RESULT4=$(ssh test@$S4_IP lsof | wc -l) RESULT5=$(ssh test@$S5_IP […]
我有一个包含文件夹名称/值对的文件: peter:/home/peter/ max:/home/max-lucas/ judith:/home/judith/documents/ 我有另一个文件包含文件名称/值对,具有相同的名称: max:todo.txt peter:calendar.txt peter:notes.txt peter:dummy.txt 这是一种数据库。 真正的文件不是那么简单。 我必须用sed提取数据,但这不是重点。 我想连接这两个文件: /home/peter/calendar.txt /home/peter/notes.txt /home/peter/dummy.txt /home/max-lucas/todo.txt 我唯一的想法是: 迭代到第一个文件来创build一个名称/值数组 遍历第二个文件,并用数组中的正确值组装每一行 问:是否有一个标准的CLI工具呢?