Go では、外部コマンドの実行とその入出力の管理は一般的なタスクです。ただし、「ログイン」などのユーザー入力を求めるコマンドを扱う場合、これらの入力をプログラムで自動化するのは困難な場合があります。
この問題に対する 1 つのアプローチは、コマンドの標準入力 (stdin) に直接書き込むことです。 ) バイトバッファを使用します。提供されているソリューションを詳しく見てみましょう:
login := exec.Command(cmd, "login")
var b bytes.Buffer
b.Write([]byte(username "\n" pwd "\n"))
login.Stdout = os.Stdout
login.Stdin = &b
login.Stderr = os.Stderr
このコードでは、b という名前の bytes.Buffer を作成し、ユーザー名とパスワードを改行で連結します。次に b をログイン コマンドの Stdin フィールドに割り当て、バッファをコマンドの入力ストリームに効果的に接続します。
コマンドが実行されると、改行が見つかるまで b から文字が読み取られ、これがユーザー名として解釈されます。その後、次の改行まで読み取られ、これがパスワードとして扱われます。この方法でバッファに手動で書き込むことで、ユーザーの対話の必要性を回避し、必要な入力をプログラムで提供します。
覚えておいてください、stdin は文字バッファであり、コマンドは通常、改行に遭遇するまで入力を読み取ります。この手法を使用すると、外部コマンドに入力する前に入力をバッファリングしてシーケンスすることができ、ユーザーの手動介入を必要とせずに入力プロセスを自動化できます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3