The Shecan CLI is used to configure your DNS name server based on Shecan website from the command line.
For more about Shecan see https://shecan.ir/
- I wrote this script, because I wanted to configure a couple of linux servers to be able to use docker hub, which are blocked in Iran. And I wanted to get an agent to do it.
Install via one of these methods:
with pip:
python3 -m venv .venv
source .venv/bin/activate
pip install shecan
Or with pipx:
pipx install shecan
or with uv:
uv tool install llm
- Run
shecan update
- It will get Shecan DNS name servers and save them into a configuration file. - Run
shecan list
It will show shecan DNS name servers from the configuration file. - Run
shecan set
This will change your DNS temporarily by moving your current/etc/resolv.conf
file and replace it with shecan DNS name server. If you encounter permission problem run the command this way:sudo $(which shecan) set
. - Run
shecan verify
It will check your DNS configuration and make sure that shecan works fine for you. - Run
shecan restore
It will restore your previous DNS configuration. - Run
shecan show
It will print your current DNS configuration. - Run
shecan --version
It will show shecan's version. - Run
shecan --help
It will show full command-line options and subcommands.
To contribute to this tool, first checkout the code. Then create a new virtual environment:
cd shecan-cli
python -m venv .venv
source .venv/bin/activate
Now install the dependencies and test dependencies:
pip install -e '.[dev]'
Or if you are using uv:
uv sync
Install pre-commit hooks to ensure code quality:
pre-commit install
pre-commit install -t pre-push