Scan and filter devices on your local network.
Project description
hellolan
Intuitive port scanning! This module is just a couple functions that wrap nmap and are exposed as command line tools.
Basically, I made this because I often need to scan for raspberry pi's on my local network and was always frustrated about remembering the correct commands. Then I needed to do some automated scanning in Python, so I just wrapped it all up in a few python functions with a cli.
Install
pip install hellolan
Usage
# by default, we scan ports 21-443
hellolan scan
# there are some presets too
hellolan ssh # --port=22
hellolan web # --port=80,443
Example output:
$ hellolan ssh
hostname ip ports
----------------- ------------- -------
192.168.1.127 [22]
node-b827e9j315hf 192.168.1.236 [22]
-
Took 3.3 seconds
There's more:
# you can filter the results too
hellolan ssh hostiwant # match an exact hostname
hellolan ssh 'host*' --ignore='badhost-*' # matching glob
hellolan ssh 192.168.1.84 # match an exact ip
# NOTE: lmk if you'd prefer regex over fnmatch
# you can change the net hosts to scan.
# by default --net=192.168.1.0/24
# so it's not exclusively for lan ...!! helloevbody!
hellolan scan --net=scanme.nmap.org
hellolan scan --net=198.116.0-255.1-127
hellolan scan --net=216.163.128.20/20
# you can also poll localhost:
# here I'm checking what I have for jupyter lab instances running.
# they autoincrement ports as 8888 + i. I'm assuming I don't have
# more than 7.
hellolan scan --net=localhost --ports=8888-8893
# Outputs:
# hostname ip ports
# ---------- --------- ------------
# localhost 127.0.0.1 [8888, 8889]
# -
# Took 11.4 seconds
Now you can use the command to directly ssh into a device !!!
How it works - it will split by the '@' symbol, poll for a device who's host matches 'abc' and replaces 'abc' with the found ip address.
hellolan ssh- user@abc
So for example:
mbp $ hellolan ssh- user@abc
Multiple hosts found:
hostname ip ports
-- -------- ------------- -------
0 abcdejkl 192.168.1.127 [22]
1 abcdefgh 192.168.1.236 [22]
Which host to use? [0]: 1
Using host: abcdefgh
---------------------
Starting SSH Session: $ ssh sonyc@192.168.1.236
---------------------
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Wed Apr 15 18:40:32 2020 from 192.168.1.214
user@abcdefgh:~ $ exit
logout
Connection to 192.168.1.236 closed.
-------------------
Ended SSH Session. (ssh sonyc@192.168.1.236)
-------------------
mbp $
It's also importable!
import hellolan
for d in hellolan.scan(ports='21-22'):
print('{hostname} ({ip}) - {ports}'.format(**d))
Notes
- this uses the default
nmap.PortScanner().scan(host, ports=ports)
setup. I'm not sure I'm knowledgeable enough to pick better defaults, but there may be ways to speed it up.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file hellolan-0.0.3.tar.gz
.
File metadata
- Download URL: hellolan-0.0.3.tar.gz
- Upload date:
- Size: 5.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ab3d30ca8258e740f8b9b1aff627827ae9620eabc58f24816fc04ee96e5ccbbb |
|
MD5 | a92a888d8cbf8ff57a39fce6f1f4e9b4 |
|
BLAKE2b-256 | 1543f92d51bd505be58a6fb46a82101a3d0121fa534a135e28d06518e62ea368 |