退出与 PetaLinux 机器的 plink 串行连接

问题描述 投票:0回答:1

我正在编写一个 bash 脚本,该脚本进入 PetaLinux 机器,执行一些命令,然后 应该 退出回到 bash 脚本以继续执行命令。到目前为止我无法退出回到 bash 脚本。

这是我尝试过的:

plink -serial "$BOARD_A_SERIAL_PORT" -sercfg 115200,8,n,1,X -batch <<EOF
root
root
sleep 2
ps aux | grep plink
ps aux | grep plink
killall -9 plink
ps aux | grep [p]link
exit
EOF

echo 'script sucessfully exited' #never reached. the serial terminal hangs

“exit”命令仅退出正在序列化的设备上的登录会话。它不会返回到 bash 脚本。我还了解到 plink 不是一个应用程序,因此尝试杀死它没有帮助。

bash scripting serial-port plink petalinux
1个回答
0
投票

您正在远程服务器上运行

killall
。但你需要在本地运行它。

以下是如何在 Windows 批处理文件中实现此目的的示例:
使用 plink 通过 COM 端口发送命令并退出
它展示了如何在本地运行

taskkill
,同时运行
plink
。关键点不是通过heredoc [
<<EOF
]提供静态输入,而是使用子shell [
( )
]。子 shell 允许您使用
echo
命令生成输入,还可以在本地运行
sleep
killall

将该 Widows 批处理文件转换为 Linux/bash 工具并根据您的需要进行调整,您可以执行以下操作:

(
  echo root
  echo root
  echo your_command
  sleep 2
  killall -9 plink
) | plink -serial "$BOARD_A_SERIAL_PORT" -sercfg 115200,8,n,1,X -batch

echo 'script successfully exited'

未经测试。另外,我不是 bash 专家,我确信有更优雅的方法可以在 bash 中实现此目的。

© www.soinside.com 2019 - 2024. All rights reserved.