gpt4 book ai didi

linux - Bash 脚本在本地工作,但不能通过 ssh。想法为什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:10:25 24 4
gpt4 key购买 nike

问题:我正在尝试创建一组脚本,提示用户输入 IP/主机名和密码(我都可以访问),然后通过 SSH 连接到 VM。第二个脚本运行一组命令,以使用各种更新和服务为环境设定基准。

在本地运行时,此脚本可以正常工作。它显示主机名并要求验证以在该环境上运行更新。

--------------------baseline.sh

#!/bin/bash
#filename: baseline.sh

echo "Are you sure you want to run your script on $(hostname -f)?"
OPTIONS="yes no"
select opt in $OPTIONS; do
if [ "$opt" = "yes" ]; then
echo Running Script...
#do script things
exit
elif [ "$opt" = "no" ]; then
echo Canceling Run...
exit
else
echo Please Input Either the # 1 or 2.
fi
done

这是输出:

is-mbp-jsmith:Setting Up Dev Env's jsmith $ sh baseline.sh 
Are you sure you want to run your script on is-mbp-jsmith.somecompany.com?
1) yes
2) no
#? 1
Running Script...

这个脚本在我的本地机器上按预期工作

--------------------------------------------modifyDevEnv.sh

这是我用来将上面的脚本通过管道传输到 VM 中的脚本。

#!/bin/bash
#filename: modifyDevEnv.sh

echo Enter a hostname/IP for the Dev Environment to connect to.
read HOST

ssh $HOST -l root 'bash -s' < baseline.sh

这是我运行这个脚本时得到的输出:

is-mbp-jsmith:Setting Up Dev Env's jsmith $ sh modifyDevEnv.sh 
Enter a hostname/IP for the Dev Environment to connect to.
10.58.88.53
root@10.58.88.53's password:
Are you sure you want to run your script on vm-jsmith.somecompany.com?

1) yes
2) no
#? 1) yes
2) no
#? is-mbp-jsmith:Setting Up Dev Env's jsmith $

当通过 ssh 运行时,脚本看起来像是运行选项命令两次然后立即结束。它从不允许用户输入是/否选项

我不知道这是否与脚本不喜欢的通过 ssh 请求用户输入有关,但这个问题让我很困惑。我是 Bash 的新手(我正在尝试的第一个实际脚本),但我没有发现语法有任何问题。有什么我想念的吗?

最佳答案

这是重现问题的一种更简单的方法:

$ cat script
read -p "Enter name: " name
echo "Hello $name"

$ bash script
Enter name: World
Hello World

$ ssh localhost 'bash -s' < script
Enter name:
Hello
Connection to localhost closed.

发生这种情况是因为 <意思是“从这个文件而不是从终端读取”。

无需复制即可远程运行本地脚本的最简单方法是将其嵌入到 ssh 命令中:

$ ssh -t localhost "$(< script)"
Enter name: World
Hello World
Connection to localhost closed.

请注意,这将在登录 shell 中运行脚本,而不是在 shebang 指定的任何地方。

关于linux - Bash 脚本在本地工作,但不能通过 ssh。想法为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27044173/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com