如何在Linux中启动/停止和启用/禁用FirewallD和Iptables防火墙

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Linux中启动/停止和启用/禁用FirewallD和Iptables防火墙相关的知识,希望对你有一定的参考价值。

在Linux系统中不同的版本系统对服务的操作是不一样的。

在RHEL&Centos6版本及之前的版本中对服务的管理是这样的:

    [root@linuxprobe ~]#service 服务名 start/stop/status/restart/reload

例如:

[root@linuxprobe ~]#service iptables status  \\\\iptables 的状态

[root@linuxprobe ~]#service iptables stop    \\\\iptables 停止

[root@linuxprobe ~]#service iptables restart  \\\\iptables重启

[root@linuxprobe ~]#chkconfig iptables on   \\\\开机自启

[root@linuxprobe ~]#chkconfig iptables off   \\\\开机关闭

在RHEL&Centos6版本及之前的版本中对服务的管理是这样的:

    [root@linuxprobe ~]#systemct  start/stop/status/restart/reload 服务.service

例如:

[root@linuxprobe ~]#systemctl start firewalld    \\\\启用firewalld

[root@linuxprobe ~]#systemctl stop firewalld    \\\\关闭firewalld

[root@linuxprobe ~]#systemctl enabledfirewalld    \\\\开机启用firewalld

[root@linuxprobe ~]#systemctl disabled firewalld    \\\\开机禁用firewalld


更多Linux的服务管理注意事项建议参考《Linux就该这样学》,加油

参考技术A 1)重启后生效开启:chkconfigiptableson关闭:chkconfigiptablesoff2)即时生效,重启后失效开启:serviceiptablesstart关闭:serviceiptablesstop需要说明的是对于Linux下的其它服务都可以用以上命令执行开启和关闭操作。在开启了防火墙时,做如下设置,开启相关端口,修改/etc/sysconfig/iptables文件,添加以下内容:-ARH-Firewall-1-INPUT-mstate--stateNEW-mtcp-ptcp--dport80-jACCEPT-ARH-Firewall-1-INPUT-mstate--stateNEW-mtcp-ptcp--dport22-jACCEPT

如何使用 shell 脚本连接到 linux 服务器并停止/启动服务?

【中文标题】如何使用 shell 脚本连接到 linux 服务器并停止/启动服务?【英文标题】:How to connect to a linux server and stop/start a service using a shell script? 【发布时间】:2017-11-18 09:35:14 【问题描述】:

我想设置一个脚本,该脚本将连接到 linux 服务器,然后停止/启动服务。但是在服务停止和启动之间,它应该等待大约 10 秒,然后检查服务是否真的停止了。

service httpd stop
--wait 10 seconds. check ps -ef | grep httpd, kill if any hanged processes
service httpd start

有人可以帮我看看怎么做吗?

【问题讨论】:

使用sleepkill -9 而不是显式检查。 我可以使用用户名和密码连接到服务器吗?我正在检查表格,但大多数人说创建一个 ssh 密钥。我将在我想运行命令的同一台服务器上部署这个 shell 脚本 您当然可以将 ssh 服务器配置为接受密码。但不建议这样做,因为它比密钥更不安全。而且您只能以交互方式执行此操作,因此不能使用脚本。至少你不应该。 我正在尝试睡眠,但出现此错误 sleep: invalid time interval `10\r',你能告诉我如何解决这个问题吗?这是我在脚本中添加的内容:sleep 10 您显然需要指定要杀死的什么进程。如果您不确定它们的用法,请阅读您尝试使用的命令的手册页。例如man kill。在您的情况下,killall -9 /usr/sbin/httpd 可能是一个不错的选择,因为它不需要特定的进程 ID。 【参考方案1】:

wait 命令用于不同的目的,我们需要使用sleep 命令代替。

查看此链接了解详细差异。 https://***.com/a/13296927/3086531


检查进程是否正在运行的脚本

#!/bin/bash
UP=$(pgrep httpd | wc -l);
if [ "$UP" -ne 1 ];
then
        echo "httpd is down.";
else
        echo "All is well.";
fi

您的最终代码将是

#!/bin/bash

service httpd stop 

sleep 10 

UP=$(pgrep httpd | wc -l);
if [ "$UP" -ne 1 ];
then
  service httpd start  #start serivce again, since no process are found 
else
  echo "Service is not stopped yet.";
  killall -15 httpd  #Kills all processes related to httpd
  service httpd start #start httpd process
fi

【讨论】:

不需要这种复杂性。为什么还要检查是否还有一个进程,无论如何你都会硬杀它。无需检查即可触发killall -9,您就知道一切都很好。 @arkascha,应该优雅地停止进程。我们应该允许他们在终止之前执行清理程序(例如删除锁定文件、将内存中的数据刷新到硬盘等)。 然后用killall -15(或简单的killall)代替killall -9。那不是我的意思。 @arkascha,发送信号 15 (SIGTERM) 有什么问题?它是要被处理的,而 SIGKILL 不能被进程处理。 @SaiAvinash 为了将 java 应用程序作为服务运行,您需要在此处执行此过程***.com/a/11203626/3086531 或者这是您想要实现的简单解决方案***.com/a/11203634/3086531

以上是关于如何在Linux中启动/停止和启用/禁用FirewallD和Iptables防火墙的主要内容,如果未能解决你的问题,请参考以下文章

如何在Linux中启动/停止和启用/禁用FirewallD和Iptables防火墙

如何启动/停止/重启MySQL

linux中/etc/init.d设置开机启动

如何ubuntu下启动/停止/重启MySQL

centos 7/rhel7: 如何重启/停止/启动网络服务

如何在 Apache 中启用 HTTP/2