gpt4 book ai didi

linux - 执行远程登录并执行另一个本地脚本的脚本

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

我必须编写一个脚本来执行远程登录和身份验证,并在远程执行本地脚本。

我原来的代码是这样的:

#!/usr/bin/expect
spawn ssh user@ip "bash -ls" < ./script.bash
expect "password"
send "abc123/r"
interact

在 ./my_script.sh 运行时给出以下信息

spawn ssh user@ip "bash -ls" < ./script.bash
user@ip's password:
./script.bash: No such file or directory

但是,如果我不带参数运行脚本,即只是

#!/usr/bin/expect
spawn ssh user@ip
expect "password"
send "abc123/r"
interact

登录成功

另外,如果我直接通过终端运行而没有像这样的脚本

ssh user@ip "bash -ls" < ./script.bash

然后通过提示获取密码后,本地文件在远程服务器上成功执行。因此,您能否建议如何使我的原始代码成功运行。

最佳答案

那是因为 expect 不理解 shell 的输入重定向。试试这个:

spawn sh -c {ssh user@ip "bash -ls" < ./script.bash}

如果“user”或“ip”是一个变量,我们需要不同的引号。比如

spawn sh -c "ssh $user@$ip 'bash -ls'  < ./script.bash" 

关于linux - 执行远程登录并执行另一个本地脚本的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32920786/

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