想要编写一个简单的 SVN 更新 bash 脚本

想要编写一个简单的 SVN 更新 bash 脚本

我想编写一个简单的 bash 脚本,用于更新给定目录中的 SVN 工作副本。使用协议访问存储库svn+ssh。这需要遵循的基本过程是:

#!/bin/bash

# temporarily relax firewall
iptables -I OUTPUT -p tcp --dport 12345 -j ACCEPT

svn up /path/to/working/copy
# prompt for ssh password will be here

# close firewall again
iptables -I OUTPUT -p tcp --dport 12345 -j REJECT

我被困在如何告诉我的 bash 脚本在提示时向 SSH 提供密码的问题上。svn up不出所料,在命令后的行中输入密码不起作用。

这有可能吗?如果不可能,我们将欢迎其他方式来实现这一目标。

PS,我知道我应该使用 SSH 公钥/私钥身份验证,但是运行托管 SVN repo 的服务器的人不愿意为我设置这个!

答案1

PS,我知道我应该使用 SSH 公钥/私钥身份验证,但是运行托管 SVN repo 的服务器的人不愿意为我设置这个!

这太卑鄙了!不过我假设你有 SSH 访问权限来执行此操作。大多数现代 OpenSSH 安装不需要在服务器上进行任何设置(除了安装之外)。我会认真考虑先尝试设置一个 SSH 密钥:

ssh-keygen
ssh-copy-id username@remotehost

那就试试吧ssh username@remotehost。如果它能帮你登录,那真是太神奇了,如果没有,你只是浪费了一分钟的生命 :)

之后,您就会得到和这样的选项expect,但sshpass这些选项更糟糕,因为您以纯文本形式对密码进行了硬编码。真恶心。

相关内容