A Telnet, SSH and Web Based Public IP Address Lookup Service for BSD Cafe
Find a file
2017-09-05 19:38:33 +00:00
checkmyip.py Added browser detection 2017-09-05 19:38:33 +00:00
LICENSE Initial commit 2017-09-01 01:49:34 -07:00
README.md README Updated 2017-09-05 12:01:31 -07:00

Twitter CheckMyIP CheckMyIP

A Telnet and SSH Based Public IP Address Lookup Service


VERSION

The version of CheckMyIP documented here is: v1.0.0


TABLE OF CONTENTS

  1. What is CheckMyIP
  2. How to Use
  3. Install Process
  4. Using the API
  5. Contributing

WHAT IS CHECKMYIP

Everybody has used a service like WhatIsMyIP.com before. If you are an IT engineer or even an amateur technology enthusiast, then you have probably had a reason to check to see your public IP address. This service works great when a browser is available, but at times it is not. We often find ourselves logged into a remote Linux machine or a network switch/router which has a command line and terminal clients (Telnet and SSH), but no browser. The CheckMyIP app and the TelnetMyIP.com and SSHMyIP.com public services were created with this in mind.


HOW TO USE

Using the public TelnetMyIP.com and SSHMyIP.com services is pretty easy: simply connect to them with a terminal client. You can use a telnet client with TCP port 23 (telnet telnetmyip.com), or a SSH client with TCP port 22 (ssh sshmyip.com). The SSH connection requires no authentication, but your SSH client may require you to enter a username, you can use anything you want as it gets ignored anyways(ssh -limrootbitch telnetmyip.com).

You can also browse to the HTTP version of the service at TelnetMyIP.com which will return a JSON reply with your IP information.

To enable the use of this service as a simple API, the response is formatted as a JSON document. See the Using the API section for information on how to leverage the API.

Note: You can also connect to ipv4.telnetmyip.com or ipv6.telnetmyip.com if you want to check a specific IP stack.

Note: The DNS records for telnetmyip.com and sshmyip.com point to the same services.


INSTALL PROCESS

If you would rather set up your own private instance of CheckMyIP, then you can follow the below instructions to set it up for yourself.

Change Linux SSH Port to TCP 222 and reboot

sudo sed -i --follow-symlinks 's/#Port 22/Port 222/g' /etc/ssh/sshd_config

shutdown -r now

Install Dependencies

yum install gcc -y
yum install libffi-devel -y
yum install openssl-devel -y
pip install python-gssapi

Install Binary

cp checkmyip.py /bin/checkmyip
chmod 777 /bin/checkmyip

mkdir -p /etc/checkmyip/

Create Service (vi /etc/init.d/checkmyip)

#!/bin/bash
# checkmyip daemon
# chkconfig: 345 20 80
# description: CheckMyIP Daemon
# processname: checkmyip

DAEMON_PATH="/bin/"

DAEMON=checkmyip
STDOUTFILE=/etc/checkmyip/stdout.log
STDERR=/etc/checkmyip/stderr.log

NAME=CheckMyIP
DESC="CheckMyIP Daemon"
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

case "$1" in
start)
				printf "%-50s" "Starting $NAME..."
				cd $DAEMON_PATH
				PID=`stdbuf -o0 $DAEMON >> $STDOUTFILE 2>>$STDERR & echo $!`
				#echo "Saving PID" $PID " to " $PIDFILE
				if [ -z $PID ]; then
						printf "%s
" "Fail"
				else
						echo $PID > $PIDFILE
						printf "%s
" "Ok"
				fi
;;
status)
				if [ -f $PIDFILE ]; then
						PID=`cat $PIDFILE`
						if [ -z "`ps axf | grep ${PID} | grep -v grep`" ]; then
								printf "%s
" "Process dead but pidfile exists"
						else
								echo "$DAEMON (pid $PID) is running..."
						fi
				else
						printf "%s
" "$DAEMON is stopped"
				fi
;;
stop)
				printf "%-50s" "Stopping $NAME"
						PID=`cat $PIDFILE`
						cd $DAEMON_PATH
				if [ -f $PIDFILE ]; then
						kill -HUP $PID
						printf "%s
" "Ok"
						rm -f $PIDFILE
				else
						printf "%s
" "pidfile not found"
				fi
;;

restart)
				$0 stop
				$0 start
;;

*)
				echo "Usage: $0 {status|start|stop|restart}"
				exit 1
esac

Finish and Start Up Service

chmod 777 /etc/init.d/checkmyip
chkconfig checkmyip on
service checkmyip start
service checkmyip status

USING THE API

The CheckMyIP code contains the CheckMyIP_Client class which is an API client example which can be used to query a CheckMyIP server (like telnetmyip.com). Below is an example of how you can use it.

from checkmyip import CheckMyIP_Client

client = CheckMyIP_Client()
ipdict = client.get()
print("\nMy IP is %s\n" % ipdict["ip"])
print("\nI used port number %s\n" % ipdict["port"])

CONTRIBUTING

If you would like to help out by contributing code or reporting issues, please do!

Visit the GitHub page (https://github.com/packetsar/checkmyip) and either report an issue or fork the project, commit some changes, and submit a pull request.