私は本質的にシェル端末である単純なスクリプトをPythonで作成しようとしています。繰り返し入力コマンドを要求し、与えられたosコマンドを実行しようとします。私が理解できないことは、実行されたコマンドをPythonに「記憶させる」方法です。私が言いたいの関連するosコマンドをPythonで実行する
例:カレントディレクトリの
- ユーザ入力
ls
- パイソンプリントの内容
- 次のユーザ入力
cd exampledir
は - Pythonはコマンドに
- ユーザ入力を実行
ls
- Pythonはの内容を出力しますコマンドシーケンス以来210
は、私はプログラムがexampledirの内容を返すことを期待ls
>cd exampledir
>ls
であるが、代わりに2つのls
コマンドの出力は同じです。
Pythonに何らかの形で実行されたコマンドが記憶され、前のコマンドに基づいて次のコマンドが実行される方法はありますか?
cd exampledir && ls
のようなものを使用できますが、これは私が探しているものではありません。コマンドは、シェル端末のように別々に実行する必要があります。
コードこれまで:
import subprocess
while True:
cmd = input("Command to Execute: ")
p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
out = p.communicate()[0]
print(out)
返信いただきありがとうございます。このプロジェクトのポイントは、ユーザーがosコマンド(端末など)を入力できるWebアプリケーションを作成することです。これらのコマンドはサーバーに送信され、実行され、出力がWebアプリケーションに返されます。私はこの「コマンド連鎖」を行う一般的な方法を探しています。コマンドのように、 'ls'から 'grep'から 'scp'まで何でもかまいません。あたかもサーバーの実際の端末を使用しているかのように、ユーザーはコマンドを実行できるはずです。 各コマンドの結果が記憶されるシェルセッションのように私が作ることができる方法を知っていますか? – Chaosy
でも、すべてのコマンドをチェックしてフィルタリングする必要はありますが(上のように)、そのまま入力を許可することはできません。それは危険です。 –