ホームページ  >  記事  >  バックエンド開発  >  PythonでパブリックIPを自動取得する例の説明

PythonでパブリックIPを自動取得する例の説明

黄舟
黄舟オリジナル
2017-10-09 10:40:141612ブラウズ

以下のエディターは、Python でパブリック IP を自動的に取得する方法の例を示します。編集者はこれがとても良いと思ったので、参考として共有します。エディターと一緒に見てみましょう

0 予備知識

0.1 SQL の基礎

ubuntu、Debian シリーズのインストール:


root@raspberrypi:~/python-script# apt-get install mysql-server

Redhat、Centos シリーズインストール:


 [root@localhost ~]# yum install mysql-server

データベースにログイン


pi@raspberrypi:~ $ mysql -uroot -p -hlocalhost
Enter password: 
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 36
Server version: 10.0.30-MariaDB-0+deb8u2 (Raspbian)

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

このうち、mysqlはクライアントコマンドです -uは指定したユーザーです -pはパスワードです -hはホストです

データベースを作成、作成しますデータテーブル

データベースの作成構文 データテーブルを作成する構文は次のとおりです


MariaDB [(none)]> help create database
Name: 'CREATE DATABASE'
Description:
Syntax:
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
 [create_specification] ...

create_specification:
 [DEFAULT] CHARACTER SET [=] charset_name
 | [DEFAULT] COLLATE [=] collation_name

CREATE DATABASE creates a database with the given name. To use this
statement, you need the CREATE privilege for the database. CREATE
SCHEMA is a synonym for CREATE DATABASE.

URL: https://mariadb.com/kb/en/create-database/


MariaDB [(none)]>

データテーブルを作成する構文は次のとおりです


MariaDB [(none)]> help create table
Name: 'CREATE TABLE'
Description:
Syntax:
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
 (create_definition,...)
 [table_options]
 [partition_options]

Or:

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
 [(create_definition,...)]
 [table_options]
 [partition_options]
 select_statement

データベースの作成 ServiceLogs


MariaDB [(none)]> CREATE DATABASE `ServiceLogs`

Createあるデータテーブル


MariaDB [(none)]> CREATE TABLE `python_ip_logs` (
 `serial_number` bigint(20) NOT NULL AUTO_INCREMENT,
 `time` datetime DEFAULT NULL,
 `old_data` varchar(50) DEFAULT NULL,
 `new_data` varchar(50) DEFAULT NULL,
 PRIMARY KEY (`serial_number`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1

テーブルの内容のクエリ


 MariaDB [ServiceLogs]> select * from python_ip_logs;
 Empty set (0.00 sec)

0.2 python 接続操作 MySQL

モジュールのダウンロードとインストール

ダウンロードパス: https://pypi.python.org/pypi/ mysql-python

installation:


安装:
解压
unzip MySQL-python-1.2.5.zip
进入解压后目录
cd MySQL-python-1.2.5/
安装依赖
apt-get install libmysqlclient-dev
安装
python setup.py install
如果为0则安装OK
echo $?

connectmysql


rreee

ifoutput connect mysql成功することは、接続がokpython mysql insertstatement

rreee

After実行であることを意味します、あなたは表示できますmysql クライアントの SELECT ステートメントによる結果

1. 要件

1.1 要件

この状態では、ブロードバンドは再起動されるたびに新しい IP を取得します。幸いなことに、以前はドメイン名から IP アドレスを見つけてアクセスできる Peanut Shell ソフトウェアがあり、これが最適でしたが、最近では Peanut Shell も実名認証を必要とします。を使用できるため、パブリック IP を取得するための Python スクリプトを作成するようになりました。

成果効果: IPが変更されたときにメールで通知され、データベースにデータを書き込むことができます

1.2

一般的な概念

1.3

フローチャート

他のコードは描画するものではありません

2.

コードを書く

2.1.1

Pythonコードを書くgetnetworkip.py

root@raspberrypi:~/python-script# cat p_mysql_3.py 
#!/usr/bin/env python

import MySQLdb

try :
  conn = MySQLdb.connect("主机","用户名","密码","ServiceLogs")
  print ("Connect Mysql successful")
except:
  print ("Connect MySQL Fail")
root@raspberrypi:~/python-script#

saveddb .py

root@raspberrypi:~/python-script# cat p_mysql1.py 
#!/usr/bin/env python

import MySQLdb

db = MySQLdb.connect("localhost","root","root","ServiceLogs")

cursor = db.cursor()

sql = "insert INTO python_ip_logs VALUES (DEFAULT,'2017-09-29 22:46:00','123','456')"

cursor.execute(sql)
db.commit()

db.close()
root@raspberrypi:~/python-script#

send_mail.py

root@raspberrypi:~/python-script# cat getnetworkip.py 
#!/usr/bin/env python
# coding:UTF-8

import requests
import send_mail
import savedb

def get_out_ip() :
  url = r'http://www.trackip.net/'
  r = requests.get(url)
  txt = r.text
  ip = txt[txt.find('title')+6:txt.find('/title')-1]
  return (ip)

def main() :
  try:
    savedb.general_files()

    tip = get_out_ip()
    cip = savedb.read_files()


    if savedb.write_files(cip,tip) :
      send_mail.SamMail(get_out_ip())
  except :
    return False

if __name__=="__main__" :
  main()
root@raspberrypi:~/python-script#


3. 受信したメールは次のとおりです:

SELECT を使用してテーブルを表示します。効果は次のとおりです:

スクリプトを crontab に入れて、スケジュールされたタスクを実行させます

以上がPythonでパブリックIPを自動取得する例の説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。