用PERL在客户机上运行Bash和Python脚本

2024-05-01 18:47:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从PERL服务器客户端脚本运行bash脚本和python脚本。连接工作,如果通过客户端发送命令得到正确答案,例如“DATE”得到客户端中的当前日期。我想在客户端窗口中运行bash脚本,点击“脚本”,但现在它在服务器终端窗口中运行。我可以修复它并在客户端窗口中运行脚本吗?也许解决办法很简单,但现在我不知道了。事先谢谢你的帮助。你知道吗

我的代码如何运行脚本


   foreach ($buf) {
            /^SCRIPT$/ and
                    print ($sock system("/bin/bash /path/to/my/bash_script")),  
                   last;
       /^DATE$/  and
                   print($sock
                         scalar(localtime),
                         "\n"),
                   last;
       print $sock "NO OPTION\n";
   }

编辑:

关于评论,我改了这一行:

print ($sock system("/bin/bash /path/to/my/bash_script"))

对此:

print ($sock `/bin/bash /path/to/my/bash_script`)

这对于python脚本非常有效。对于交互式bash脚本,这是不正确的。这是一个简单的bash游戏,使用tput给游戏区域着色。你知道吗

交互性-游戏中的控件:

    local key=$(cat -v)
    local dy=0
    local dr=0

    if [ "$key" == "w" ]; then
        dy=$((dy-2))
    fi

    if [ "$key" == "s" ]; then
        dy=$((dy+2))
    fi


    if [ "$key" == "^[[A" ]; then
        dr=$((dr-2))
    fi

    if [ "$key" == "^[[B" ]; then
        dr=$((dr+2))
    fi

主回路是这样的:

while [key "e" for exit not down] then
    interactivity()
    draw_game_area()
    increase_iteration++
    sleep 0.1
done;

Tags: topathkey脚本bash客户端ifbin
2条回答

那里没有标准溶液。客户端必须支持远程运行系统命令功能,即自己成为命令服务器。你知道吗

print ($sock system("/bin/bash /path/to/my/bash_script"))

向客户端发送system()的返回,但这不是脚本的输出。要捕获脚本的输出并将其返回到客户端,请改用backticks:

print($sock `/bin/bash /path/to/my/bash_script`), last;

相关问题 更多 >