A virtual shell implementation
Project description
Fakeshell
Fakeshellは仮想的なシェル環境を提供するパッケージです。
標準で提供されているLinuxコマンドの代わりに、Pythonで実装されたコマンドを実行できます。
fakeshellを使用することで、Linuxシステムのようなサンドボックス環境を再現することができます。
インストール方法
pipを使ってfakeshellをインストールできます。
$ pip install fakeshell
使い方
fakeshellを使うには、PythonからFakeShellクラスをインポートしてインスタンスを作成する必要があります。
FakeShellクラスは、次のように作成できます。
from fakeshell.shell import FakeShell
fake_sh = FakeShell(cwd="/tmp")
FakeShellクラスは、次のようなメソッドを提供しています。
run_command(command: str) -> Generator[str]: FakeShellクラスのrun_commandメソッドを使用すると、指定したコマンドを実行することができます。 コマンドを実行すると、実行結果のジェネレータが返されます。
for result in fake_sh.run_command("ls -l > hoge.txt"):
print(result)
stopメソッドを呼び出すとファイルシステムへの書き込み内容を元の状態に戻します。
fake_sh.stop()
以下のように記述することでstopメソッドを省略することもできます。
with FakeShell(cwd="/tmp") as fake_sh:
for result in fake_sh.run_command("ls -l > hoge.txt"):
print(result)
run_commandメソッドによって実行される関数には、以下のような仮想のファイルシステムが提供されます。
仮想ファイルシステム上ではホストマシンのファイルシステムと同じ内容が参照されますが、
ファイルシステムへの読み書きはホストマシンへは影響しません。
- ファイルの読み書き
- ディレクトリの作成、削除
- ファイル、ディレクトリのパーミッション変更
- シンボリックリンクの作成、削除
- ファイルシステムの使用率の確認
独自コマンドを実装する
独自コマンドを実装するには、register_commandを使って関数を登録します。
from fakeshell.interpreter import register_command
def hello(args="", stdin=""):
stdout = f"Hello, {args}"
return stdout
register_command("hello", hello)
登録したコマンドは、以下のようにして実行できます。
for result in fake_sh.run_command("hello John"):
print(result)
FakeSSHサーバを構築する
$ docker pull ghcr.io/phishing-hunter/fakeshell:main
$ docker run --rm -it -d -p 2222:2222 ghcr.io/phishing-hunter/fakeshell:main
$ ssh root@localhost -p 2222 # root/password
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
Built Distribution
File details
Details for the file fakeshell-1.0.1.tar.gz
.
File metadata
- Download URL: fakeshell-1.0.1.tar.gz
- Upload date:
- Size: 13.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.8.15
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a1e68ad42cb16bb9b520e1cadedac89fd7ff88e6948dc03ba43c8df450241435 |
|
MD5 | 50d59ed178b11a6c10982b6a9088b64c |
|
BLAKE2b-256 | bfbbb821bd7710a10142ce68a5dd536a0e1748705ddb0949ae7d5a06417f72b1 |
File details
Details for the file fakeshell-1.0.1-py3-none-any.whl
.
File metadata
- Download URL: fakeshell-1.0.1-py3-none-any.whl
- Upload date:
- Size: 17.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.8.15
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 36c1689e1eb885f07d90cd38e08d7e5eb10e57c0d32c528bbcf5d239e0c3828b |
|
MD5 | af04d6bafdc6c7502da991e9c0b11892 |
|
BLAKE2b-256 | aaaa7ff63e9d99ba29d92b1a63ff51df6d8019c2c5f30eeeb48d5f9a806f4b47 |