当前位置: 首页>>代码示例>>Golang>>正文


Golang Session.Shell方法代码示例

本文整理汇总了Golang中golang.org/x/crypto/ssh.Session.Shell方法的典型用法代码示例。如果您正苦于以下问题:Golang Session.Shell方法的具体用法?Golang Session.Shell怎么用?Golang Session.Shell使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在golang.org/x/crypto/ssh.Session的用法示例。


在下文中一共展示了Session.Shell方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。

示例1: runPipe

func runPipe(user, pass, host, cmd string) {
	fmt.Println("runPipe...")
	sshConfig := &ssh.ClientConfig{
		User: user,
		Auth: []ssh.AuthMethod{ssh.Password(pass)},
	}
	sshConfig.SetDefaults()

	client, err := ssh.Dial("tcp", host, sshConfig)
	if err != nil {
		// errors.Wrap(err, err.Error())
		fmt.Println(err.Error())
	}

	var session *ssh.Session

	session, err = client.NewSession()
	if err != nil {
		// errors.Wrap(err, err.Error())
		fmt.Println(err.Error())
	}
	defer session.Close()

	// modes := ssh.TerminalModes{
	// 	ssh.ECHO:          0,     // disable echoing
	// 	ssh.TTY_OP_ISPEED: 14400, // input speed = 14.4kbaud
	// 	ssh.TTY_OP_OSPEED: 14400, // output speed = 14.4kbaud
	// }

	// if err := session.RequestPty("xterm", 80, 40, modes); err != nil {
	// 	log.Fatal(err)
	// }

	w, err := session.StdinPipe()
	if err != nil {
		panic(err)
	}
	//    r, err := session.StdoutPipe()
	//    if err != nil {
	//        panic(err)
	//    }

	var stdoutBuf bytes.Buffer
	session.Stdout = &stdoutBuf
	// session.Run(cmd)
	err = session.Shell()
	w.Write([]byte(fmt.Sprintf("%s\n", "configure")))
	w.Write([]byte(fmt.Sprintf("%s %s\n", "set interfaces ethernet eth4 description", cmd)))
	w.Write([]byte(fmt.Sprintf("%s\n", "commit")))
	w.Write([]byte(fmt.Sprintf("%s\n", "save")))
	w.Write([]byte(fmt.Sprintf("%s\n", "exit")))
	w.Write([]byte(fmt.Sprintf("%s\n", "exit")))

	fmt.Println(stdoutBuf.String())
}
开发者ID:grengojbo,项目名称:sw-cli,代码行数:55,代码来源:commands.go

示例2:

				err = session.Run("ls")
				Expect(err).NotTo(HaveOccurred())

				stdin.Close()
			})

			It("terminates the shell when the stdin closes", func() {
				waitCh := make(chan error, 1)
				waitStub := runner.WaitStub
				runner.WaitStub = func(command *exec.Cmd) error {
					err := waitStub(command)
					waitCh <- err
					return err
				}

				err := session.Shell()
				Expect(err).NotTo(HaveOccurred())

				err = client.Conn.Close()
				client = nil
				Expect(err).NotTo(HaveOccurred())

				session.Wait()

				Eventually(waitCh, 3).Should(Receive(MatchError("signal: hangup")))
			})

			It("should set the terminal type", func() {
				result, err := session.Output(`/bin/echo -n "$TERM"`)
				Expect(err).NotTo(HaveOccurred())
开发者ID:sykesm,项目名称:diego-ssh,代码行数:30,代码来源:session_channel_handler_test.go


注:本文中的golang.org/x/crypto/ssh.Session.Shell方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。