2014-09-22 162 views
0

我正在尝试编写一个在我的ssh服务器上被淹没的脚本,但我很难检查一个进程是否始终运行。它总是认为洪水正在运行。我有一个拒绝所有iptable设置,并且不知道如何使它工作,除非我每次运行它时都设置这些规则。Bash脚本检查进程是否正在运行

#!/bin/bash 
#starts deluged and deluge console 
echo "Start or Close Deluge?" 
read startcls 
if [[ $startcls == "S" || $startcls == "s" ]]; then 
    if [ -z "$(pgrep deluged)" ]; then 
     echo "Deluge Daemon already running. Close it?" 
     read input 
     if [[ $input == "y" || $input == "Y" ]]; then 
      pkill deluged 
      iptables -D OUTPUT -p tcp --dport 57714 -j ACCEPT 
      iptables -P INPUT DROP 
      echo "Deluged process terminated" 
     fi 
    else 
     iptables -A OUTPUT -p tcp --dport 57714 -j ACCEPT 
     iptables -P INPUT ACCEPT 
     deluged 
     echo "Deluge Daemon started" 
     deluge-console 
    fi 
else 
    pkill deluged 
    iptables -D OUTPUT -p tcp --dport 57714 -j ACCEPT 
    iptables -P INPUT DROP 
    echo "Deluged process terminated" 
fi 
+1

'[-z“$(pgrep deluged)”]'将在没有'流氓'进程正在运行时返回true。还有什么关于这不是专门工作?那么关于iptables的问题到底是什么? – 2014-09-23 00:11:48

+0

woops我切换它。谢谢。我有我的iptables设置为删除所有连接传入和传出,除非它们与我的SSH守护进程相关。因为这个,我不能使用洪水,我不确定它需要什么端口才能工作。我宁愿在使用洪水时不接受所有输入,只打开必要的端口。我知道我需要使用端口57714来使用cli界面,但是我应该打开什么端口来实际下载种子。 – Painguy 2014-09-23 00:14:43

+0

你应该能够设置一个洪水范围,以便为我想象的连接打开哪些端口。我知道其他客户可以做到这一点。 – 2014-09-23 00:19:27

回答

0

可能是您的脚本名称中含有“淹没”一词。将其更改为类似Deluge_check.sh(带有大写字母“D”)