Skip to main content

A virtual shell implementation

Project description

Fakeshell

Fakeshellは仮想的なシェル環境を提供するパッケージです。
標準で提供されているLinuxコマンドの代わりに、Pythonで実装されたコマンドを実行できます。
fakeshellを使用することで、Linuxシステムのようなサンドボックス環境を再現することができます。
asciicast

インストール方法

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fakeshell-1.0.1.tar.gz (13.1 kB view details)

Uploaded Source

Built Distribution

fakeshell-1.0.1-py3-none-any.whl (17.0 kB view details)

Uploaded Python 3

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

Hashes for fakeshell-1.0.1.tar.gz
Algorithm Hash digest
SHA256 a1e68ad42cb16bb9b520e1cadedac89fd7ff88e6948dc03ba43c8df450241435
MD5 50d59ed178b11a6c10982b6a9088b64c
BLAKE2b-256 bfbbb821bd7710a10142ce68a5dd536a0e1748705ddb0949ae7d5a06417f72b1

See more details on using hashes here.

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

Hashes for fakeshell-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 36c1689e1eb885f07d90cd38e08d7e5eb10e57c0d32c528bbcf5d239e0c3828b
MD5 af04d6bafdc6c7502da991e9c0b11892
BLAKE2b-256 aaaa7ff63e9d99ba29d92b1a63ff51df6d8019c2c5f30eeeb48d5f9a806f4b47

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page