Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有telnet的Bash脚本;“外部主机关闭的连接”;_Bash_Telnet - Fatal编程技术网

带有telnet的Bash脚本;“外部主机关闭的连接”;

带有telnet的Bash脚本;“外部主机关闭的连接”;,bash,telnet,Bash,Telnet,我有一个bash脚本,应该连接到我的Sky+HD框并暂停它。这是box支持的一项服务,因为它与iPhone/iPad应用程序的协议相同 有没有什么明显的原因可以解释为什么它不能保持连接 (echo 'POST /SkyPlay2 HTTP/1.1 SOAPACTION: "urn:schemas-nds-com:service:SkyPlay:2#SetAVTransportURI" Content-Type: text/xml; charset=utf-8 Content-Length

我有一个bash脚本,应该连接到我的Sky+HD框并暂停它。这是box支持的一项服务,因为它与iPhone/iPad应用程序的协议相同

有没有什么明显的原因可以解释为什么它不能保持连接

    (echo 'POST /SkyPlay2 HTTP/1.1
SOAPACTION: "urn:schemas-nds-com:service:SkyPlay:2#SetAVTransportURI"
Content-Type: text/xml; charset=utf-8
Content-Length: 399 

<?xml version="1.0" encoding="utf-8"?><s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><u:SetAVTransportURI xmlns:u="urn:schemas-nds-com:service:SkyPlay:2"><InstanceID>0</InstanceID><CurrentURI>xsi://'$line'</CurrentURI><CurrentURIMetaData>NOT_IMPLEMENTED</CurrentURIMetaData></u:SetAVTransportURI></s:Body></s:Envelope>') | telnet 192.168.1.82 49153
(echo'POST/SkyPlay2 HTTP/1.1
SOAPACTION:“urn:com:service:SkyPlay:2#SetAVTransportURI”
内容类型:text/xml;字符集=utf-8
内容长度:399
0xsi://“$line”未实现”)| telnet 192.168.1.82 49153

您的框可能有访问限制,因此不允许从正在运行脚本的计算机进行连接

作为一般性建议:

  • 一定要引用
    $line
    ,以防止不愉快的事情发生,如:
    echo'foo'$list“'bar'
    (注意双引号)
  • 使用
    nc
    (netcat):
    echo'stuff'| nc-n 192.168.1.82 49153
    ,而不是
    telnet
    ,这意味着更多的交互使用;如果您的
    telnet
    在发送您的数据之前,试图保持智能并协商telnet协议特定参数,这可能有助于解决连接问题
  • 由于只使用一个命令
    echo
    ,发送数据,因此不需要在子shell中运行它,因此不需要括号

    <> LI>当你有多行输出时,考虑使用<代码>猫,非常感谢你的帮助!除了第1点,我完全理解,我应该引用什么我没有引用的?在你粘贴的代码中,最后一行包含
    xsi://'$line'
    -正确的形式是
    xsi://'$line'
    nc-n是问题所在,看起来Sky+HD框不接受telnet(尽管它过去是)