从 bash 脚本启动 Shrewsoft

Starting Shrewsoft from a bash script

总结

正在连接到 Shrew 软 vpn
- 终端 -- 命令工作正常
- bash 脚本 -- 相同命令 returns 错误:

"double free or corruption (out)"

问题

我经常使用 shrewsoft vpn 客户端连接到我的工作 vpn。我想创建一个 bash 脚本,这样我就可以使用一个命令来设置 vpn 客户端以及一些其他环境变量。当我 运行 来自终端的命令时,它工作正常。但是 bash 脚本中的相同命令失败了。

终端命令

ikec -r "<shrewsoft vpn connection name>" -u "john" -p "<password>" -a

Bash 脚本

#! bash
ikec -r "<shrewsoft vpn connection name>" -u "john" -p "<password>" -a

然后在终端中我运行正在执行命令:

> sudo bash ./vpn_connection.sh

我已经开始了 "sudo /usr/sbin/iked"。从终端,我可以成功连接和断开连接 运行ning 那个命令,但是当我从 bash 脚本 运行 它时,我得到一个错误。

当您的 shell 脚本 运行s 时,它会丢失您定义但未导出的任何环境变量。当您 运行 您的脚本在 sudo 下时,sudo 清除 环境,除了一些变量。

可能是 ikec 依赖于缺少的环境变量,或者脚本执行的 ikec 可能不是同一个,可能是因为 PATH 更改,或别名。

顺便说一句,我不会为此使用脚本。我会使用别名或函数。在您的 ~/.profile~/.bash_profile(无论您使用哪个)中尝试:

alias vpn-connect='ikec -r "<shrewsoft vpn connection name>" \
      -u "john" -p "<password>" -a'

然后你可以简单地连接

$ vpn-connect

但是,关于文件中的密码的评论中提出的观点被很好地接受了。寻找一种无需提供密码即可连接到您的 vpn 的方法。如果不能,您可以将该选项从别名中删除,让 ikec 提示您输入。