質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

Q&A

解決済

2回答

1019閲覧

コマンドからパスワードを取得したい

fideo

総合スコア55

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

0グッド

1クリップ

投稿2021/11/05 09:15

編集2021/11/05 09:36

Pythonのsubprocessライブラリーを使ってコマンドで実行した結果から
パスワードの文字列を取得したいです。

下記の方法でコマンドの実行できましたが、エラーが表示されます。

コマンドの結果
print(result)

import subprocess result = subprocess.run('net user testanup /random /domain', shell=True) print(result) この要求はドメイン Testcnet.local のドメイン コントローラーで処理されます。 testnup のパスワード: ibFKusHC コマンドは正常に終了しました。

実現結果
パスワードの文字だけ取得したいです。

ibFKusHC

全体のCODE

import subprocess result = subprocess.run('net user testnup /random /domain', shell=True) print(result) result_change=result[61:15] print(result_change)

エラー

line 5, in <module> result_change=result[61:15] TypeError: 'CompletedProcess' object is not subscriptable

コマンドからテキストの取得方法が分かる方がいましたら、
教えて頂けると幸いです。

宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

そのnetコマンドの結果表示はprint(result)の出力だと思っているのでしょうが、違います。
result = subprocess.run('net user testanup /random /domain', shell=True)だけで表示されます。

プログラムでその出力を扱うには、

Python

1result = subprocess.run('net user testanup /random /domain', shell=True, stdout=subprocess.PIPE) 2command_output = result.stdout

とでもして、command_outputから必要部分を抜き取ってください。

投稿2021/11/05 18:09

otn

総合スコア84806

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fideo

2021/11/07 02:30

回答ありがとうございます。 上記の方法で試してみます。
fideo

2021/11/07 02:58 編集

上記の方法で試したところ文字化けするので、日本語で表示される場合encoding='shift jis'を追加しましたらおかげさまで問題なくできました。
guest

0

自己解決

下記のコードでPWを取得できました。
コマンドの標準出力を取得したい場合には,runメソッドの stdout 引数に subprocess.PIPE を渡す必要があります。
また日本語で出力する必要があるため**encoding='shift jis'**を指定

あとは特定の文字をスライスで取得するだけです。

CODE

import subprocess result = subprocess.run('net user testanup /random /domain',encoding='shift jis',shell=True,stdout=subprocess.PIPE) command_output = result.stdout # print(command_output) # pw=command_output[64:72] print(pw) ibFKusHC

参考
Python の subprocess
Pythonで文字列を抽出(位置・文字数、正規表現)

投稿2021/11/07 02:55

fideo

総合スコア55

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問