【问题标题】:PHP invoking Expect Script (Works running the script through SSH, but on invoked with PHP)PHP 调用 Expect 脚本(通过 SSH 运行脚本,但使用 PHP 调用)
【发布时间】:2017-05-30 16:35:15
【问题描述】:

我有一个 UBNT Toughswitch,我正在尝试使用我的手机使用 php 和脚本远程关闭 poe 电源。我使用 UBNT mFi 的类似脚本来执行此操作。如果我通过 SSH 连接到服务器(使用 root,只有我曾经设置的用户)并在其所在的位置运行它,则该脚本可以正常工作。我检查了脚本和 php 代码上的所有 R/W/E 框以防万一php权限问题。所以这里是脚本:

PHP 通过 http get 请求调用脚本:

    <?php

    system ( "./tsport3-24-off.sh" );

    ?>

    <script type="text/javascript">

    window.close();

    </script>

这是 Expect 脚本:

    #!/usr/bin/expect
    set timeout 30

    spawn ssh shane@$ip
        expect {
            "*assword:*" {
                send "$password\r"
                expect {
                    "*assword:*" {
                            close
                            continue
                            }
                    "*#*" {
                        send "grep -v 'switch.port.3.poe=48' /var/tmp/system.cfg > /var/tmp/tmpsystem.cfg; mv /var/tmp/tmpsystem.cfg /var/tmp/system.cfg\r"
                        expect {
                            "*not found*" {
                                    close
                                    }
                            "*#*" {
                                send "save && reboot\r"
                                interact
                                }
                            }
                        }
                    }
                }
            }

它将通过一切,直到保存 && 重新启动部分,并且在通过 php 调用时不会这样做。通过SSH,它工作正常。我还尝试使用 2 个不同的命令保存并重新启动,以防它不喜欢 &&,并将其隔离到一个单独的脚本中以确保它在哪里。就像 php 出于某种原因(例如权限问题)拒绝发送 save && reboot ,但它通过 ssh 将其发送到不同的设备,所以这对我来说没有意义。这个是关闭端口 3 上的 poe 24v。我有其他的 on (24/48) 并重新启动,所有工作都可以在没有 php 的情况下工作,但不能使用 php。

【问题讨论】:

    标签: php ssh centos httprequest expect


    【解决方案1】:

    不是 100% 的答案,但它有效。

    如果我像这样添加另一个保存 && 重启:

        expect "*#*"
        send "save && reboot/r"
        expect "*#*"
        send "save && reboot/r"
    

    当由 php 脚本运行时它不会出错,如果我正常运行它可能会出错,但这绝不是我的意图。认为这是一个时间问题,或者它在由 php 运行时在某处拾取了额外的 #

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-07
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      相关资源
      最近更新 更多