首页 > 解决方案 > 远程执行需要输入的 bash 脚本

问题描述

我正在使用 SSH 命令远​​程执行 bash 脚本:

ssh user@server 'bash -s' < $script_dir/script.sh

在 script.sh 中,我将使用如下命令:

ssh-keygen -t rsa
ssh-copy-id postgres@$sqlserver
ssh postgres@$sqlserver -C true

并且

printf "Creating user in postgresql server...\n"
createuser -s -P username

需要用户输入,但我发现当我从远程服务器执行命令时,它会跳过获取用户输入并失败。

另一个是:

printf "Please enter your barman server name: \n" ; read -s barmanserver

哪个也不能读取用户的输入

我知道脚本似乎无法读取其他终端的输入,但如果我需要用户输入继续,谁能帮我找到解决方案?

非常感谢!!

伊娃

标签: linuxbashshellssh

解决方案


我过去曾使用过类似的东西。我不太清楚为什么我安装了 sshpass。

apt-get install sshpass -y
echo "Adding users to new VMs"
adduser adminuser
echo "changing user password"
echo "adminuser:password" | chpasswd
adduser adminuser sudo

它确实有效,但它会给你一些警告。


推荐阅读