Я пытаюсь прочитать сертификат SSL удаленного веб-сайта с помощью этой команды cli openssl s_client -connect www.yahoo.no:443 2> /dev/null | openssl x509 -noout -enddate | cut -d = -f 2
.
Это прекрасно работает в cli, но когда я выполняю его в golang:
package main
import (
"bytes"
"log"
"os/exec"
"time"
)
func main() {
cmd := exec.Command("echo", "| openssl s_client -connect www.yahoo.com:443 2> /dev/null | openssl x509 -noout -enddate | cut -d = -f 2")
var out bytes.Buffer
cmd.Stdout = &out
err := cmd.Run()
log.Println(out.String())
}
Я ничего не получу взамен.Как я могу выполнить эту команду на ходу?
ОБНОВЛЕНИЕ:
это то, что я пытался, но безуспешно
func command() {
cmd1 := exec.Command("openssl", "s_client", "-connect", "www.yahoo.no:443", "2>", "/dev/null")
cmd2 := exec.Command("openssl", "x509", "-noout", "-enddate")
var out bytes.Buffer
reader, writer := io.Pipe()
cmd1.Stdout = writer
cmd2.Stdin = reader
cmd2.Stdout = &out
cmd1.Start()
cmd2.Start()
cmd1.Wait()
writer.Close()
cmd2.Wait()
reader.Close()
io.Copy(&out, reader)
log.Println(out.String())
}
Я получаюпустой ответ.