Articles of bash

从文件加载黑名单到IPTABLES

在一个单独的文件中,我创build了一个IP地址列表来阻止。 这个文件将会每天添加或删除IP地址。 我想“引用”这个IP文件到/ etc / sysconfig / iptables中,但我不确定这是否可能。 如果是,请描述如何做到这一点(即:ExternalList = / var / tmp / myblacklist.txt)? 如果这种types的引用在IPTABLES中是不可能的,将myblacklist.txt中的条目添加到iptables中并从iptables中删除不再出现在myblacklist.txt文件中的条目是一个好脚本? 我诚实地寻找一个简单的bash脚本,可能会利用sed。 否则,我认为我会走下一条路,把所有想要允许/阻止的IP放入一个MySQL表中,并且每天build立一个脚本来编译一个新的iptable。 这种方式可以在sql数据库中完成,而iptables只会打印数据库中的任何内容。 但是,在我select这个选项之前,我可以逃脱一些简单的bash脚本吗?

xinetd读取发布数据

我正在尝试使用xinetd和bash为webhook编写一个简单的处理程序。 我有这个configurationxinetd的小事情: service github-hooks { port = 61000 socket_type = stream protocol = tcp wait = no user = ubuntu server = /home/ubuntu/github-hooks.sh } 和这个bash脚本: #!/bin/bash echo -e "HTTP/1.1 200 OK" 现在,我想读取在webhook发送的数据,所以我可以做一些更有趣的事情,总是返回200。 我如何从我的bash脚本中读取发布数据? 我试过了: while read line; do echo "$line" >> /home/ubuntu/test done < /dev/stdin 但这不适合我。 编辑 由于下面的build议,我停止了xinetd并使用nc来查看通过线路nc原始数据: $nc -l 61000 得到这个: POST / HTTP/1.1 […]

Bash:在另一个进程期间运行后台服务

我正在运行一些自动脚本。 对于某些任务,我有时需要一个异想天开的背景“服务”来运行。 例如,我想设置一个SSH隧道,运行testing,然后删除隧道。 ATM我使用一些冗长的代码: #!/usr/bin/env bash function automated_task(){ socksProxyTimeout=120 ssh -A -D 9999 some_server "sleep $socksProxyTimeout; " & sockProxyPid=$! sleep 3 function cleanUp(){ echo shutting down background processes… kill -9 $sockProxyPid || true cd ../../ } trap 'cleanUp' EXIT run_selenium_with_proxy } automated_task 我不喜欢这个解决scheme,因为我认为只有在整个脚本退出时才会调用cleanup,而不仅仅是“automated_task”。 我真的希望尽可能使本地代码。 我真正想要做的只是指定后台进程只在前台进程仍在运行的情况下运行。

如何在垃圾邮件后运行脚本,在脚本中使用参数并将spamc输出redirect到sendmail?

我试图在spamassassin之后执行自定义操作。 我有工作在postfix master.cf spamassassin unix – nn – – pipe user=spamd argv=/usr/bin/spamc -e /usr/sbin/sendmail -oi -f ${sender} ${recipient} 但是我想将垃圾邮件输出redirect到我的脚本,脚本需要参数,执行我的操作,而不是将垃圾邮件输出redirect到sendmail。 我试图做 spamassassin unix – nn – – pipe user=spamd argv=/usr/bin/spamc -e /home/scripts/my.sh ${sender} ${recipient} 和my.sh只是呼应$1和$2但在mail.log看到 spamc[31244]: exec failed: Exec format error 总之,我想至less显示发件人收件人参数在回声和之后,尝试redirect垃圾邮件输出到我的脚本sendmail,但我甚至无法运行简单的回声( UPDATE 目前我在postfix中有以下conf: smtp inet n – – – – smtpd -v -o content_filter=filter filter […]

系统服务自行closures

我有这个SystemD服务的问题: [单位]说明= RTC客户端服务后= rds.service需要= rds.service [Service] User=USER Group=GROUP PermissionsStartOnly=true RuntimeDirectory=rtc_client RuntimeDirectoryMode=0770 WorkingDirectory=/usr/lib/systemd/scripts/ Type=forking ExecStartPre=/bin/mkdir -p /var/run/rtc_client ExecStartPre=/bin/chown -R USER:GROUP /var/run/rtc_client ExecStart=/bin/bash rtc_client.sh start ExecStop=/bin/bash rtc_client.sh stop Restart=no PIDFile=/var/run/rtc_client/rtc_client.pid TimeoutStartSec=0 TimeoutStopSec=30 [Install] WantedBy=multi-user.target 机器每天早上启动。 该服务执行ExecStart,但突然停止,因为它试图杀死进程PID: rtc_client.service – RTC Client Services Loaded: loaded (/usr/lib/systemd/system/rtc_client.service; enabled) Active: failed (Result: exit-code) since Thu 2016-06-23 06:25:46 CEST; 3h 33min ago […]

用bash和psql平行postgres查询?

我试图运行一系列postgres函数/存储过程并行使用bash + psql在单独的表上运行,如下所示: psql -d samples_20160612_0616 -c "select insert_function('2016-6-14 20:00'::timestamp, '2016-6-14 21:00'::timestamp)" & psql -d samples_20160612_0616 -c "select insert_function('2016-6-15 19:00'::timestamp, '2016-6-15 20:00'::timestamp)" & psql -d samples_20160612_0616 -c "select insert_function('2016-6-15 20:00'::timestamp, '2016-6-15 21:00'::timestamp)" & psql -d samples_20160612_0616 -c "select insert_function('2016-6-16 19:00'::timestamp, '2016-6-16 20:00'::timestamp)" & psql -d samples_20160612_0616 -c "select insert_function('2016-6-16 20:00'::timestamp, '2016-6-16 21:00'::timestamp)" 出于某种原因,似乎并不像预期的那样并行运行,这些语句是连续运行的。 我在这里做错了什么? 不应该这样并行吗?

如何tar我的脚本命名的目录?

我正在编写一个脚本来tar一个目录,然后将压缩file upload到S3。 该目录是根据date,月份和年份命名的。 这是我的尝试: TARNAME=`date –date="$(date +%Y-%m-15) -1 months" +' %B-%Y'` tar cvfz /tmp/$TARNAME.tar.gz /Drive_E/drive_i_bu/monthly/$TARNAME /usr/local/bin/aws s3 mv /tmp/$TARNAME.tar.gz s3://test-roger/ 以上的作品,如果我没有做variables替代。 通过variables,我得到: tar: July-2016.tar.gz: Cannot stattar (child): /tmp/: Cannot open: Is a directory 此外,焦油似乎试图深入目录。 有任何想法吗? 再次,上述工作没有variables替代。 所以,这个问题不在AWS CLI工具中。

使用远程服务器和Zenoss上的netcat监控端口

我对使用Zenoss很新,所以如果这是简单的话。 我有一个bash单线程,检查一堆服务正在某些端口上运行: for i in {80,443,5009,5010,5020,5030,5040,5050,5060,5065,5066,5070,5080,5098}; do nc -vz localhost $i; done 有什么办法可以告诉Zenoss通过SSH在远程服务器上运行它,并在出现故障时创build警报? 我已经创build了一个针对该设备的模板,并将该模板添加到zDeviceTemplates,但是我不知道该从哪里去实际工作。 谢谢。

将脚本的输出redirect到作为后台作业的文件不会输出任何内容

我有一条线: RAILS_ENV=production bundle exec rake mentions:stream > mention.log 它将文本输出到mention.log文件。 当我尝试将其作为后台作业运行时: RAILS_ENV=production bundle exec rake mentions:stream > mention.log & 它不会输出任何东西到这个文件。 有人能解释我为什么吗?

Docker重启configuration

我无法find任何文件。 我启动一个容器来挂载一些NFS卷并执行一些入口点脚本。 该脚本从docker run命令接收参数。 这里是我使用的示例命令: docker -H 192.168.0.31:4000 run -v /nfs/bench:/nfs/bench:shared -e BENCH_SHARED_FOLDER=/nfs/bench -e BENCHID=354re34343 –restart always -d meandocker/benchnew:v1 所以这个命令有端口,挂载的卷和其他环境variables。 我的问题是,当容器重新启动时,所有这些信息会发生什么? docker使用完全相同的命令来启动新的容器吗?