球球看世界

python 更改iptables连接端口的动态ip地址

andy.zhang 2016年03月04日 编程脚本 502 评论关闭

有个需求,公司用的是动态ADSL上网的,ip地址每次断线后就变了。所以在22端口的连接IP上一直没做限制

但这样感觉有很多地址扫描端口进行口令测试的。所以写了个python脚本对远程的IP进行更改。

运行脚本之前,一定要保证iptables里22端口那行要有指定的IP连接。代码如下:

#!/bin/env python

#write by andy.zhang

import os

of=file('/etc/sysconfig/iptables','r')

old_ip=''

while True:

        line=of.readline()

        if '/32' in line and '--dport 22' in line:

                ''' print len(line) '''

                fir=0

                for i in range(len(line)):

                        if line[i] in '0123456789':

                                fir=i

                                break

                for i in range(len(line)):

                        if line[i] == '/':

                                old_ip= line[fir:i].lstrip().rstrip()

                                break

        if line =='' or old_ip != '':

                of.close()

                break

if old_ip == '':

        '''print "Setting Is Erroy!Please check IPTABLES!!!" '''

        exit

if os.system('dig +short yhzxq.eicp.net >/tmp/new_ip.txt') != 0:

        ''' print 'IP Error,Exit' '''

        exit

of_new_ip=file('/tmp/new_ip.txt','r')

new_ip=of_new_ip.readline().lstrip().rstrip()

of_new_ip.close()

if old_ip != new_ip:

        of=file('/etc/sysconfig/iptables','r')

        new_file=file('/etc/sysconfig/new_iptables','w')

        while True:

                line=of.readline()

                if old_ip in line:

                        wline=line.replace(old_ip,new_ip)

                        ''' print wline,'\n' '''

                        new_file.write(wline)

                else:new_file.write(line)

                if line == '':

                        new_file.flush()

                        new_file.close()

                        of.close()

                        break

        os.system('rm -f /etc/sysconfig/iptables')

        os.system('mv /etc/sysconfig/new_iptables /etc/sysconfig/iptables')

        os.system('/etc/init.d/iptables restart')

说明:1,dig命令是要先安装的,具体可以先百度。

            2,以上红色的字替换成你的动态域名。建议用花生壳。

            3,iptables里要先有类似这个:

                  -A INPUT -s 14.156.29.204/32 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

            4,支行之前请备份iptables,测试好之后可加入到crontab里。

百度网盘下载链接:链接:http://pan.baidu.com/s/1jGThjc6 密码:gahy


有想过改写代码,python里有一段换字符的代码很不错。但是,这里,能用,咱就不换了。


发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

球球看世界

我的微信号:zxq138888888 (左侧二维码扫一扫)欢迎添加!

APACHE 安装加速模块mod_pagespeed