mirror of
https://github.com/valitydev/salt.git
synced 2024-11-07 08:58:59 +00:00
Moved the external_ip grain into salt-contrib
This commit is contained in:
parent
58b094ec1b
commit
ff35fef57c
@ -1,50 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
'''
|
||||
:codeauthor: Jeff Frost
|
||||
:copyright: © 2013 by the SaltStack Team, see AUTHORS for more details.
|
||||
:license: Apache 2.0, see LICENSE for more details.
|
||||
|
||||
|
||||
salt.grains.external_ip
|
||||
~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Return the external IP address reported by one of the following providers:
|
||||
|
||||
* ipecho.net
|
||||
* externalip.net
|
||||
* ident.me
|
||||
|
||||
Which ever reports a valid IP first
|
||||
'''
|
||||
|
||||
# Import Python Libs
|
||||
import contextlib
|
||||
import socket
|
||||
import urllib2
|
||||
|
||||
# Import salt libs
|
||||
from salt.utils.validate.net import ipv4_addr as _ipv4_addr
|
||||
|
||||
|
||||
def external_ip():
|
||||
'''
|
||||
Return the external IP address
|
||||
'''
|
||||
check_ips = ('http://ipecho.net/plain',
|
||||
'http://api.externalip.net/ip',
|
||||
'http://v4.ident.me')
|
||||
|
||||
for url in check_ips:
|
||||
try:
|
||||
with contextlib.closing(urllib2.urlopen(url, timeout=3)) as req:
|
||||
ip_ = req.read().strip()
|
||||
if not _ipv4_addr(ip_):
|
||||
continue
|
||||
return {'external_ip': ip_}
|
||||
except (urllib2.HTTPError,
|
||||
urllib2.URLError,
|
||||
socket.timeout):
|
||||
continue
|
||||
|
||||
# Return an empty value as a last resort
|
||||
return {'external_ip': []}
|
Loading…
Reference in New Issue
Block a user