# CheckMyIP - [myip.bsd.cafe](https://myip.bsd.cafe) A Telnet, SSH and Simple HTTP Based Public IP Address Lookup Service ----------------------------------------- ### USAGE - **TELNET**: - Default: `telnet myip.bsd.cafe` - IPv4: `telnet myip4.bsd.cafe` - IPv6: `telnet myip6.bsd.cafe` - **SSH**: - Default: `ssh myip.bsd.cafe` - IPv4: `ssh myip4.bsd.cafe` - IPv6: `ssh myip6.bsd.cafe` - Your SSH client may require you to enter a username. You can use anything you want (`ssh -l imrootbitch myip.bsd.cafe`) - **CURL**: - Default: `curl -L myip.bsd.cafe` - IPv4: `curl -L myip4.bsd.cafe` - IPv6: `curl -L myip6.bsd.cafe` - **WGET**: - Default: `wget -qO- myip.bsd.cafe` - IPv4: `wget -qO- myip4.bsd.cafe` - IPv6: `wget -qO- myip6.bsd.cafe` ----------------------------------------- ### VERSION ### The version of CheckMyIP documented here is: **v1.3.0** ----------------------------------------- ### TABLE OF CONTENTS ### 1. [What is CheckMyIP](#what-is-checkmyip) 2. [How to Use](#how-to-use) 3. [Using the API](#using-the-api) 4. [Install Process](#install-process) 5. [1.0.0 TO 1.1.0 Updates](#updates-in-v100----v110) 6. [Contributing](#contributing) ----------------------------------------- ### WHAT IS CHECKMYIP ### Everybody has used a service like [WhatIsMyIP.com](https://www.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 *BSD or 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 **myip.bsd.cafe** public services were created with this in mind. ----------------------------------------- ### HOW TO USE ### Using the public **myip.bsd.cafe** service is pretty easy: simply connect to them with a terminal client. You can use a telnet client with TCP port 23 (`telnet myip.bsd.cafe`), a SSH client with TCP port 22 (`ssh myip.bsd.cafe`), or CURL (`curl -L myip.bsd.cafe`). 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 myip.bsd.cafe`). You can also browse to the HTTP version of the service at [myip.bsd.cafe](https://myip.bsd.cafe/) 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](#using-the-api) section for information on how to leverage the API. ----------------------------------------- ### 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 myip.bsd.cafe). 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"]) ``` ----------------------------------------- ### 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. Install Dependencies (for example, on a FreeBSD jail) ``` pkg install python39 py39-gssapi py39-paramiko ``` Clone Repo and install ``` git clone https://brew.bsd.cafe/BSDCafe/checkmyip cp checkmyip/checkmyip.py /usr/local/bin chmod a+rx /usr/local/bin/checkmyip.py ``` Create Service (`vi /usr/local/etc/rc.d/checkmyip`) ``` #!/bin/sh # PROVIDE: checkmyip # REQUIRE: DAEMON # KEYWORD: shutdown . /etc/rc.subr name="checkmyip" rcvar=checkmyip_enable load_rc_config $name : ${checkmyip_enable:=no} : ${checkmyip_user:="nobody"} pidfile="/var/run/${name}.pid" command="/usr/local/bin/checkmyip.py" command_interpreter="/usr/local/bin/python3.9" command_args="&" start_precmd="checkmyip_precmd" checkmyip_precmd() { install -o ${checkmyip_user} -g ${checkmyip_user} /dev/null ${pidfile} } run_rc_command "$1" ``` Finish and Start Up Service ``` chmod a+rx /usr/local/etc/rc.d/checkmyip mkdir /var/log/checkmyip chown nobody:nobody /var/log/checkmyip service checkmyip enable service checkmyip start ``` ----------------------------------------- ### UPDATES IN V1.0.0 --> V1.1.0 ### **NEW FEATURES:** - Was seeing issues where SSH would be very slow to exchange. Likely related to log file sizes, so I change the logging function to turnover to new logging files every day. ----------------------------------------- ### UPDATES IN V1.1.0 --> V1.3.0 ### - README updated for install on Ubuntu instead of CentOS - Small tweaks to support Python3 ----------------------------------------- ### CONTRIBUTING ### If you would like to help out by contributing code or reporting issues, please do! Visit the BSD Cafe Brew page (https://brew.bsd.cafe/BSDCafe/checkmyip) and either report an issue or fork the project, commit some changes, and submit a pull request. Original code by [John W Kerns](https://github.com/packetsar/checkmyip) [logo]: /checkmyip_icon-100.gif [whatismyip]: https://www.whatismyip.com/