如何在 SSHpass 后运行命令而不关闭连接?

如何在 SSHpass 后运行命令而不关闭连接?

我正在学习如何使用 Linux,想看看使用后是否可以运行一组命令SSH密码进入机器。

#!/usr/bin/env bash
clear
virsh start rhel8.4-2server
sleep 10
sshpass -p "PASSWORD_HERE" ssh -o StrictHostKeyChecking=no server@IP_ADDRESS_HERE
echo "Hello and good day" && date

这将很好地 ssh 进入机器,但它不会执行回声日期命令。这些命令仅在连接关闭后运行。

在此输入图像描述


我发现另一个线程谈论使用 EOF,但当我阅读更多内容时。这将在命令运行后关闭连接。但我希望连接保持打开状态。

#!/usr/bin/env bash
clear
virsh start rhel8.4-2server
sleep 10
sshpass -p "PASSWORD_HERE" ssh -T -o StrictHostKeyChecking=no server@IP_ADDRESS_HERE << EOF
echo "Hello and good day" && date
EOF

在此输入图像描述

答案1

您可以通过使用-t命令的标志(分配伪终端)ssh然后指定您的命令来执行此操作; /bin/bash

例子:

[root@server1 ~]# sshpass -p 'hunter2' ssh -t bubba@server2 'date; /bin/bash'
Thu Sep 30 22:24:32 EDT 2021
[bubba@server2 ~]$

相关内容