小编Meh*_*dad的帖子

强制关闭SSH客户端会话

我已经编写了一个SSH客户端来连接网络设备,一旦运行命令超过25秒,我就通过"select"设置超时.我注意到一些设备,他们有另一个IOS,一旦超时被触发,它就不能通过Close()方法丢弃SSH会话,并导致goroutinge泄漏.我需要保持客户端并断开会话以准备下一个命令.看起来goroutine在那个时候永远不会终止!你们有什么想法吗?

    go func() {
       r <- s.Run(cmd)
    }()

    select {
       case err := <-r:
         return err
       case <-time.After(time.Duration(timeout) * time.Second):
         s.Close()
         return fmt.Errorf("timeout after %d seconds", timeout)
    }
Run Code Online (Sandbox Code Playgroud)

通过堆分析,我看到了以下内容:2.77GB 99.44%99.44%2.77GB 99.44%bytes.makeSlice

     0     0% 99.44%     2.77GB 99.44%  bytes.(*Buffer).ReadFrom

     0     0% 99.44%     2.77GB 99.44%  golang.org/x/crypto/ssh.(*Session).start.func1

     0     0% 99.44%     2.77GB 99.44%  golang.org/x/crypto/ssh.(*Session).stdout.func1

     0     0% 99.44%     2.77GB 99.44%  io.Copy

     0     0% 99.44%     2.77GB 99.44%  io.copyBuffer

     0     0% 99.44%     2.78GB 99.93%  runtime.goexit
Run Code Online (Sandbox Code Playgroud)

在/usr/local/go/src/runtime/asm_amd64.s中的例程======================== runtime.goexit

     0     2.78GB (flat, cum) 99.93% of Total

     .          .   1993:   RET …
Run Code Online (Sandbox Code Playgroud)

ssh go

8
推荐指数
1
解决办法
1059
查看次数

Perl Net :: Jabber :: Bot新行

Net::Jabber::Bot在我的Perl脚本中使用模块并且它正常工作但是一个问题是,当我想发送消息时,所有新行都被删除了!两个问题:

  1. 我们如何在邮件中添加新行?我们应该禁用chomp某个地方吗?
  2. Jabber/XMPP中的新行会怎样?

perl xmpp newline

6
推荐指数
1
解决办法
938
查看次数

标签 统计

go ×1

newline ×1

perl ×1

ssh ×1

xmpp ×1