Go - 通过外部命令写入标准输入

2023-11-24

我有以下代码,它执行外部命令并将两个字段输出到控制台等待用户输入。 一个用于用户名,另一个用于密码,然后我手动添加了它们。

谁能给我提示如何写入标准输入以便从程序内部输入这些输入?

对我来说,棘手的部分是有两个不同的字段等待输入,而我很难弄清楚如何一个接一个地填写。

login := exec.Command(cmd, "login")

login.Stdout = os.Stdout
login.Stdin = os.Stdin
login.Stderr = os.Stderr

err := login.Run()
if err != nil {
    fmt.Fprintln(os.Stderr, err)
}

解决方案:

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

我想你可以使用bytes.Buffer为了那个原因。 像这样的东西:

login := exec.Command(cmd, "login")

buffer := bytes.Buffer{}
buffer.Write([]byte("username\npassword\n"))
login.Stdin = &buffer

login.Stdout = os.Stdout
login.Stderr = os.Stderr

err := login.Run()
if err != nil {
    fmt.Fprintln(os.Stderr, err)
}

诀窍是stdin只是一个字符缓冲区,在读取凭据时,它只会读取字符,直到遇到\n角色(或者也许\n\r)。因此,您可以提前将它们写入缓冲区,并将缓冲区直接提供给命令。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Go - 通过外部命令写入标准输入 的相关文章

  • json.Unmarshal json字符串到对象是空结果[重复]

    这个问题在这里已经有答案了 我有一个非常简单的程序 如下所示 package main import encoding json fmt type RunCommand struct level string json level call
  • 运行最新版本时没有“最新”消息?

    我正在尝试使用Sparkle https sparkle project org与 Qt Go 的绑定 https github com therecipe qt app 闪光 m import
  • 云存储 API 的错误导入“系统调用”

    我正在按照以下说明进行操作https cloud google com appengine docs go googlecloudstorageclient download开始将一些代码从现已弃用的文件 API 迁移到新的 Cloud S
  • 如何使用 go1.6.2 构建 linux 32 位

    有没有任何组合GOARCH and GOOS我可以设置哪些值来构建 ELF 32 位二进制文 件 GOOS linux and GOARCH 386 更多示例 架构 32 bit gt GOARCH 386 64 bit gt GOARCH
  • 如何通过在切片上查找来从切片复制到数组

    我正在编写一个库来处理二进制格式 我有一个带有数组变量的结构 我想保留它以用于文档目的 我还需要从输入字节片中查找和判断 一些伪代码 type foo struct boo 5 byte coo 3 byte func main input
  • 如何在golang中获得两个切片的交集?

    Go 中有没有有效的方法来获取两个切片的交集 我想避免嵌套 for 循环之类的解决方案slice1 string foo bar hello slice2 string foo bar intersection slice1 slice2
  • Go的堆接口实现的优先级队列的大小限制

    在Java中 有一个具有大小属性 的PriorityQueue 我在这里也期待同样的事情 如果我没记错的话 用例 一一读取数百万数据并将其发送到优先级队列 我只想要前 5 个计算元素 因此我只想要大小为 5 的堆 优先级队列 我正在尝试使用
  • 在 Go 中解析多个 JSON 对象

    可以使用以下方法轻松解析如下对象encoding json包裹 something foo something else bar 我面临的问题是当服务器返回多个字典时 如下所示 something foo something else ba
  • 如何覆盖 go 模块中的依赖项?

    In dep您可以选择覆盖依赖项并使其指向不同的存储库 例如以下内容https github com kubermatic glog logrus https github com kubermatic glog logrus库一需要将以下
  • Go 中的数据竞争:为什么会在 10-11 毫秒以下发生?

    这是我运行的代码 package main import fmt time const delay 9 time Millisecond func main n 0 go func time Sleep delay n fmt Printl
  • 在 OSX 上交叉编译 Go?

    我正在尝试在 OSX 上交叉编译 go 应用程序以构建适用于 Windows 和 Linux 的二进制文件 我已经阅读了网上能找到的所有内容 我发现的最接近的例子已经发布在 除了疯狂邮件列表上许多未完成的讨论之外 http solovyov
  • 如何从 golang fyne 容器中删除对象

    我正在开发 GUI 应用程序 需要动态添加和删除 gui 元素 我想知道是否有办法从 golang fyne 容器中删除元素 在下面的示例代码中 我创建了容器并动态添加元素 现在我希望能够删除这些元素而不是隐藏它们 我尝试的一个 解决方案
  • 将 Websocket 消息发送到 Go 中的特定通道(使用 Gorilla)

    我对 Go 很陌生 并且发现自己使用套接字作为我的第一个项目 这是一个多余的问题 但我无法理解如何将 websocket 更新发送到 Go 中的特定通道 使用 Gorilla 我在用此链接中的代码示例 https github com go
  • 修改现有的yaml文件并添加新的数据和注释

    我最近看到了yaml https github com go yaml yaml tree v3lib 有新版本 V3 与nodes https github com go yaml yaml blob v3 yaml go L348功能
  • GO中的优先级队列

    谁能向我解释一下 我想在GO中实现一个优先级队列 接口实现来自link https golang org pkg container heap example priorityQueue 但优先级最低 我的代码 pq make Priori
  • 是否可以在 Golang 中 pickle 结构实例

    我正在 Golang 中做一些机器学习 我现在碰壁了 我训练有素的分类器需要将近半分钟的时间来训练 并且想要保存分类器的该实例 这样我就不必每次都从头开始训练 在 Golang 中应该如何去做呢 仅供参考 我的分类器是一个结构 当我用 py
  • 如何获取文件的 ctime、atime、mtime 并更改它们

    如何使用 Go 获取文件的 ctime mtime atime 并更改它们 在 Go 1 1 2 中 os Stat只能获取mtime os Chtimes 可以更改 mtime 和 atime 但不能更改 ctime Linux ctim
  • 数据库连接最佳实践

    我有一个使用 net http 的应用程序 我使用 http 注册了一些处理程序 这些处理程序需要从数据库中获取一些内容 然后才能继续编写响应并完成请求 我的问题是连接到该数据库的最佳实践是什么 我希望它能够以每分钟 1 个请求或每秒 10
  • Golang、mysql:错误1040:连接过多

    我正在使用 github com go sql driver mysql 驱动程序 我打开一个数据库 db err sql Open mysql str 然后我有两个函数 每个函数被调用 200 次 并使用以下 mysql 代码 rows
  • java.lang.NoSuchMethodError:com.fasterxml.jackson.databind.type。使用 apache beam Spark runner 运行 go 示例时

    我想跑grades https github com apache beam tree master sdks go examples gradesapache beam go sdk 提出的示例 在一个主服务器和两个从服务器 spark2

随机推荐

  • CF 中不存在 BinaryFormatter。解决方案?

    我需要在紧凑框架上从 byte 序列化 反序列化 obj 但没有 BinaryFormatter 我该怎么办 谢谢 这是我在服务器端使用的类 我也希望在客户端上使用它 带有 Windows Mobile 6 的设备 public class
  • 使用 Jersey 和 @ApplicationPath 注解加载资源

    我正在尝试在没有 web xml 的情况下将基本的球衣宁静服务部署到 Tomcat7 WebServlet loadOnStartup 1 ApplicationPath resources Path mypath name public
  • 所有警报对话框消息和文本字段已更改为单行。请检查图像

    以前所有对话框和文本字段都运行良好 但不是我不知道这些文本字段如何突然变成单行三重 就像这里的一些消息 let alert UIAlertController title Cancel Booking message Are you sur
  • MySQL CONVERT_TZ()

    我正在尝试建立一个数据库来存储用户指定的每日警报时间 例如 用户希望在每天上午 7 00 到 7 30 之间满足某个条件时收到警报 在尝试实现这一点时 我需要适应夏令时 这是我尝试的解决方案 将用户本地时区 长格式 例如 美国 东部 信息存
  • 如何在 PHPStorm 中为 CodeIgniter 框架启用自动完成

    在CodeIgniter项目中 我通常使用以下命令来执行sql res this gt db gt select gt from customer gt where customer id id gt get 但不幸的是我的 PHPStor
  • JSONPath API Gateway Body 映射中的访问变量

    使用 AWS API Gateway IS 将 api 资源配置为 Kinesis 的 AWS 代理PutRecords行动 API 使用者向我发送了一个事件列表 我需要将这些事件转发到 Kinesis 流 他们将数据发送到 API 网关的
  • CSS3 过渡 Polyfill [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 好吧 大多数人都会熟悉 CSS3 过渡 相比 jQuery 动画 我更喜欢它 因为它具有 CSS 的简单性 我唯一的遗憾是它不能在 IE 如果您提前
  • constexpr 求值分支/ constexpr 重载

    设置 我有一个使用 SIMD 内在函数的函数 并且想在一些 constexpr 函数中使用它 为此 我需要将其设为 constexpr 但是 SIMD 内在函数未标记为 constexpr 编译器的常量求值器无法处理它们 我尝试用具有相同功
  • 使用 DataContractSerializer 进行简单的数据文件版本控制

    读过数据合同版本控制我们得出的结论是 这并不是故事的全部 例如 如果您以前有 ValueA 而在新版本中它现在称为 ValueB 并且是不同的类型 并且您需要将 ValueA 转换为 ValueB 会发生什么情况 有一些回调我可以用来帮助解
  • 使用ConfigParser读取没有节名的文件

    我在用ConfigParser读取脚本的运行时配置 我希望具有不提供部分名称的灵活性 有些脚本足够简单 它们不需要 部分 ConfigParser会抛出一个NoSectionError异常 并且不会接受该文件 我怎样才能让 ConfigPa
  • 从 webdriver.io 获取数据后动态构建 Mocha 测试

    我正在寻找一种解决方案来在异步获取数据后定义 Mocha 测试 目前 我使用gulp webdriver使用 Selenium 获取 HTML 内容 我想测试某些 HTML 标签结构 例如 我想从 HTML 页面获取所有按钮结构 1 在 M
  • C 中的 sin v/s sinf 函数

    我正在尝试使用sinf函数在我的 C 程序中 但它在 MSVC 6 0 下给了我一个未定义的引用错误sin工作正常 这让我很好奇找到两者之间的区别sin and sinf 两者之间的逻辑区别是什么sin and sinf 我怎样才能实现我自
  • 如何知道是什么使休眠持久对象变脏?

    我用 hibernate 映射的对象有奇怪的行为 为了知道为什么该对象行为异常 我需要知道是什么使该对象变脏 有人可以帮助并给我提示吗 该对象是 Java Spring 上下文中的 Java 类 所以我更喜欢针对 Java 平台的答案 编辑
  • jQuery ajaxForm 返回 .json 文件

    我在 Rails 中有一个模型创建表单 我还通过 ajax 返回 JSON 到目前为止我的代码看起来像 new stem ajaxForm new stem is my form dataType json success formSucc
  • 将 JSON 日期信息解析为 C# DateTime

    我有一个返回 CLR 对象的 WCF 服务 该对象定义如下 DataContract public class Person DataMember public string FullName get return fullName set
  • Angular2 通过 Promise 获取路由的参数

    嘿 我尝试过以下代码 constructor private route ActivatedRoute ngOnInit this route params toPromise then data gt 然而它没有做任何事情 如果我交换to
  • PHP 警告:mysqli_stmt::bind_param():变量数量与准备好的语句中的参数数量不匹配

    不知道为什么我会收到此 PHP 警告消息 看来准备好的语句中有四个参数 bind param 中也有四个变量 谢谢你的帮助 if stmt mysqli gt prepare SELECT url month year cover imag
  • C++ 常量结构体成员初始化

    我有一个常数struct timespec我班的成员 我应该如何初始化它 我唯一疯狂的想法就是衍生出我自己的想法timespec并给它一个构造函数 非常感谢 include
  • 在 Gmail 中撰写邮件的 URL(具有完整的 Gmail 界面并指定收件人、密件抄送、主题等)

    我找到了一个post它提供了一个仅打开撰写消息窗口的链接示例 但是 我希望它打开一个窗口完整的 Gmail 界面但已准备好撰写新消息 当然这有效 https mail google com mail u 0 compose 但是 我还想添加
  • Go - 通过外部命令写入标准输入

    我有以下代码 它执行外部命令并将两个字段输出到控制台等待用户输入 一个用于用户名 另一个用于密码 然后我手动添加了它们 谁能给我提示如何写入标准输入以便从程序内部输入这些输入 对我来说 棘手的部分是有两个不同的字段等待输入 而我很难弄清楚如