如何解决tput:在使用 Ruby Net:SSH 时没有 $TERM 的值并且没有指定 -T
我正在使用 Ruby Net:SSH 库与远程 PC 建立 ssh 连接,然后执行远程 cmd。 当我开始我的 SSH 连接时,我没有问题,但有时,当我使用 exec 时,并非无处不在!我在 stderr 中返回了一个错误,即“tput:$TERM 没有值且没有指定 -T”。
代码示例:
Net::SSH.start(nodeAddress,nodeLogin,:password => nodePassword,:port => nodePort) do |ssh|
ssh.exec! "cat \"#{sftpSshKey}\"" do |channel,stream,data|
if(stream == :stderr)
return "error tput"
end
end
end
如果有人有想法或已经遇到过这个问题。
猫的例子工作正常,如果我使用它,我会收到“tput”错误:
ssh.exec! "test -r \"#{sftpSourceFile}\" && echo \"Read\" || echo \"NRead\"" do |channel,data|
如果我使用它,我就没有错误:
ssh.exec! "test -w \"#{nodeDestinationPath}\" && echo \"Write\" || echo \"NWrite\"" do |channel,data|
问候。
解决方法
来自 Net::SSH 源代码的
This example 展示了如何使用通道执行交互式命令,然后读取命令的输出,并为命令提供输入。
# ssh.open_channel do |channel|
# channel.exec("/invoke/some/command") do |ch,success|
# abort "could not execute command" unless success
#
# channel.on_data do |ch,data|
# puts "got stdout: #{data}"
# channel.send_data "something for stdin\n"
# end
#
# channel.on_extended_data do |ch,type,data|
# puts "got stderr: #{data}"
# end
#
# channel.on_close do |ch|
# puts "channel is closing!"
# end
# end
# end
#
# ssh.loop
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。