从 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 提示您输入。
总结
正在连接到 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 提示您输入。