macos - 如何修复我的期望脚本以进行 scp 下载?
问题描述
我正在尝试使用 expect 绕过我正在使用的远程服务器的密码身份验证过程,因此我可以批量下载一系列文件,每个文件都存储在不同的文件夹中。
使用 expect 的原因是远程文件存储在单独的文件夹中,我正在访问的服务器不允许我 ssh 密钥访问。
目前我正在努力使用期望下载单个文件,不要介意一次多个文件。下面是我的简单脚本:
#!/bin/bash
#connect to the server using scp
expect <<EOF
spawn scp username@server:file.txt ./
expect “*word:*“
send “password\r”
EOF
我希望将 file.txt 下载到我运行脚本的目录中。但是,当它运行时,我从服务器获取文本输出,要求输入密码,然后暂停 4-5 秒,然后退出命令提示符。
非常感谢您对此的任何帮助!
解决方案
- 我在您的代码中看到“花式”引号。Expect 不会将它们理解为引号。确保您的编辑器不使用“智能引号”。
发送密码后,您必须等待下载完成才能退出脚本:
#!/bin/bash #connect to the server using scp expect <<EOF set timeout -1 spawn scp username@server:file.txt ./ expect "*word:*" send "password\r" expect eof EOF
推荐阅读
- html - 为什么div底部的页脚标签没有?
- ios - 当应用程序在后台并使用 UrlSessionDownloadTask 下载多个文件时,iOS 应用程序崩溃
- python - 如何将多个函数的输出重定向到 python 中的字符串或标准输出?(标准输出与变量的相反)
- python - 用 groupby 平均值替换 pandas 数据框的空值
- node.js - app.use() 需要中间件函数错误
- xslt - XSLT, XPath, 使用 current() 的值进行选择和求和
- typescript - 如何判断一个值是否已设置为未定义或根本没有设置?
- react-native - 尝试运行 react native、expo、vs code、android studio 的主要问题
- r - 在 ggplot2 的第二个系列中绘制错误
- node.js - 在构建时从 url 预加载/保存图像