在 PERL 客户端上运行 Bash 和 Python 脚本
runing Bash and Python script on client in PERL
我想从 PERL 服务器-客户端脚本中 运行 bash 脚本和 python 脚本。连接有效,如果通过客户端发送命令得到正确答案,例如 "DATE" 在客户端获取当前日期。我想 运行 bash 在客户端 window 上编写脚本 "SCRIPT" 但现在它是 运行 在服务器终端 window 上。我可以在客户端 window 中修复它和 运行 脚本吗?也许解决方案很简单,但现在我不知道。预先感谢您的帮助。
我的一段代码我如何尝试运行我的脚本
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;
那里没有标准的解决方案。客户端必须支持 运行 系统命令远程功能——即自己成为命令服务器。
print ($sock system("/bin/bash /path/to/my/bash_script"))
将 system() 的 return 发送到客户端,但这不是脚本的输出。要捕获脚本的输出并将其 return 发送给客户端,请改用反引号:
print($sock `/bin/bash /path/to/my/bash_script`), last;
我想从 PERL 服务器-客户端脚本中 运行 bash 脚本和 python 脚本。连接有效,如果通过客户端发送命令得到正确答案,例如 "DATE" 在客户端获取当前日期。我想 运行 bash 在客户端 window 上编写脚本 "SCRIPT" 但现在它是 运行 在服务器终端 window 上。我可以在客户端 window 中修复它和 运行 脚本吗?也许解决方案很简单,但现在我不知道。预先感谢您的帮助。
我的一段代码我如何尝试运行我的脚本
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;
那里没有标准的解决方案。客户端必须支持 运行 系统命令远程功能——即自己成为命令服务器。
print ($sock system("/bin/bash /path/to/my/bash_script"))
将 system() 的 return 发送到客户端,但这不是脚本的输出。要捕获脚本的输出并将其 return 发送给客户端,请改用反引号:
print($sock `/bin/bash /path/to/my/bash_script`), last;