Linux

如何在 SSHpass 之後執行命令而不關閉連接?

  • October 1, 2021

我正在學習如何使用 Linux,並想看看在使用SSHpass進入機器後是否可以執行一組命令。

#!/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 進入機器就好了,但它不執行echodate命令。這些命令僅在連接關閉後執行。

在此處輸入圖像描述


我發現另一個執行緒談論使用 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

在此處輸入圖像描述

您可以通過使用該命令的-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 ~]$

引用自:https://unix.stackexchange.com/questions/671351