Fake Network Operating Systems - FakeNOS#
"Reality is merely an illusion, albeit a very persistent one."
~ Albert Einstein
FakeNOS simulates Network Operating Systems interactions. You can simulate network devices like Cisco IOS or Huawei SmartAX interactions over SSH with little effort. This project it is mainly intented for testing and development purposes.
Installation | Examples | Platforms
Installation#
The package is currently available in PyPI, so you can install it using pip:
pip install fakenos
Usage#
This is sample example in which we simulate two devices, one running Cisco IOS
and another running Huawei SmartAX. To run it, create inventory.yaml
file with
the following content:
hosts:
R1:
username: admin
password: admin
platform: cisco_ios
port: 6000
R2:
username: admin
password: admin
platform: huawei_smartax
port: 6001
Then create main.py
file with the following content:
from fakenos import FakeNOS
network_os = FakeNOS(inventory='inventory.yaml')
network_os.start()
Run the script:
python main.py
And Voila! You have two devices running, one with Cisco IOS and another with Huawei SmartAX.
In case you want to connect to them, you can use any SSH client, like ssh
:
# To connect to Cisco IOS
ssh -p 6000 admin@localhost
# To connect to Huawei Smartax
ssh -p 6001 admin@localhost
And here are some commands you can try:
- Cisco IOS commands:
show version
show interfaces
show ip interface brief
- Huawei SmartAX commands:
display version
display board
display sysman service state
Tip
Many times, we don't have time to read the documentation. There is a simple help
command which shows all the available commands. It can be called using help
or ?
.
CLI Usage#
FakeNOS comes with a CLI tool that allows you to start the simulation from the command line. You can try a predefined example by running:
fakenos
In this case 3 devices will be created:
- Cisco IOS device with username user
and password user
on port 6000
- Huawei SmartAX device with username user
and password user
on port 6001
- Arista EOS device with username user
and password user
on port 6002
You can also specify the inventory file to use:
fakenos --inventory inventory.yaml