"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como automatizar a entrada de comandos externos no Go: um guia para ignorar a interação do usuário com comandos como "login"

Como automatizar a entrada de comandos externos no Go: um guia para ignorar a interação do usuário com comandos como "login"

Publicado em 2024-11-09
Navegar:315

How to Automate External Command Input in Go:  A Guide to Bypassing User Interaction for Commands Like \

Automatizando a entrada de comandos externos para Go

No Go, executar comandos externos e gerenciar suas entradas e saídas é uma tarefa comum. No entanto, ao lidar com comandos que solicitam entrada do usuário, como "login", pode ser um desafio automatizar essas entradas programaticamente.

Uma abordagem para esse problema é escrever diretamente na entrada padrão do comando (stdin ) usando um buffer de bytes. Vamos mergulhar na solução fornecida:

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

Neste código, criamos um bytes.Buffer chamado b e concatenamos o nome de usuário e a senha com novas linhas. Em seguida, atribuímos b ao campo Stdin do comando de login, conectando efetivamente o buffer ao fluxo de entrada do comando.

Quando o comando for executado, ele lerá os caracteres de b até encontrar uma nova linha, interpretando-a como o nome de usuário. Ele então lerá até a próxima nova linha, tratando-a como a senha. Ao escrever manualmente no buffer dessa maneira, evitamos a necessidade de interação do usuário e fornecemos as entradas necessárias programaticamente.

Lembre-se, stdin é um buffer de caracteres e os comandos normalmente leem a entrada até encontrarem novas linhas. Esta técnica permite armazenar em buffer e sequenciar entradas antes de alimentá-las para comandos externos, automatizando o processo de entrada sem exigir intervenção manual do usuário.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3