我正在学习如何使用 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 ~]$