2017-09-17 13 views
0

golangで.exeファイルを実行し、Webソケットで出力値を送信します。exec batまたは.exeファイルをGloangしても出力が得られない

私はbashファイルを実行しますが、.exeまたは.batファイル(.batファイルはいくつかのパラメータを含む.exeファイルを実行します)で動作しない場合、Linuxではうまく動作します。プログラムは実行されましたが、私は決してスクリプトの出力を見たり聞いたりしません。私の問題は、ウィンドウのスクリプトの出力を取得する方法です。あなたが私を助けることができれば、それは評価されるだろう。

感謝:)あなたの助けを

cmd := exec.Command("cmd", "/C", "file.exe or file.bat", "parameters") 
stdout, err := cmd.StdoutPipe() 
if err != nil { 
    panic(err) 
} 
stderr, err := cmd.StderrPipe() 
if err != nil { 
    panic(err) 
} 
err = cmd.Start() 
if err != nil { 
    panic(err) 
} 

scannerOut := bufio.NewScanner(stdout) 
for scannerOut.Scan() { 

    log.Printf("%s", scannerOut.Text()) 

    err = socket.Emit("test", map[string]interface{}{"user": user, "name": Name, "data": scannerOut.Text()}) 
    if err != nil { 
     log.Println(err) 
    } 
} 

おかげで私はそれを試してみましたが、再び私のためのスクリプトが実行されましたが、私は出力を持っていない:/

output, err := exec.Command("cmd", "/C", cmdPath).CombinedOutput() 
//cmd := exec.Command("ping", "google.fr", "-t") 
//cmd := exec.Command("cmd", "/C", "C:/Users/Cyril/Desktop/zec_miner/miner", "--server", "zec-eu1.nanopool.org", "--user", "t1cjM242nws6QjfGWApeASG9DNDpsrHWv8A.ccl3ouf/[email protected]", "--pass", "z", "--port", "6666") 
/*stdout, err := cmd.StdoutPipe()*/ 
if err != nil { 
    panic(err) 
} 

log.Printf("%s", string(output)) 

err = socket.Emit("test", map[string]interface{}{"user": user, "rig_name": rigName, "data": output}) 
if err != nil { 
    log.Println(err) 
} 
+0

Windows 0分離を検出しました。それはGoogleです。 – Codebeat

答えて

0

私が作成していますちょっとこんにちは世界のプログラムhello.exeちょうど "こんにちは!" stdoutに。その後、次のプログラムはhello.exeを呼び出し、 "Hello World!"同じように。

配管コードやスキャナーに不具合がある場合は、最初に簡単な例を試して、失敗した箇所を確認してください。

package main 

import (
    "fmt" 
    "os/exec" 
) 

func main() { 
    output, err := exec.Command("cmd", "/C", "hello.exe").CombinedOutput() 
    if err != nil { 
     panic(err) 
    } 
    fmt.Println(string(output)) 
} 
関連する問題