【问题标题】:using special character in OS X terminal script在 OS X 终端脚本中使用特殊字符
【发布时间】:2018-08-15 20:18:37
【问题描述】:

我正在尝试使用在一行中提供的用户密码的命令运行 sudo

echo abc$*@def | sudo -S -u user_account ./script_name
echo abc\$*@def | sudo -S -u user_account ./script_name
echo 'abc$*@def' | sudo -S -u user_account ./script_name
echo 'abc\$*@def' | sudo -S -u user_account ./script_name

所有这些命令不断输入错误密码请重试错误

我也尝试将用户密码更改为“m”,并且成功了

echo 'm' | sudo -S -u user_account ./script_name

这意味着密码中的特殊字符有问题

注意:我使用的是 OS X 10.13.3,这是一个只有我自己运行的命令,我想要一个一键式解决方案,这样我就不必在很多机器上输入 pwd。是的,这个密码的安全性在这里不是问题

如果通过脚本完成,我也可以使用其他一键式方法

有人可以帮忙吗?

【问题讨论】:

  • 如果你的密码真的是abc$*@def,我认为第三个应该可以工作。
  • 对于以其他用户身份运行脚本的问题,这是一个糟糕的解决方案。最好将sudo 配置为允许以该用户身份运行此脚本而无需密码。 man sudoers 似乎是为机器编写的,而不是人类,而是例如this thread 有一些很好的建议。
  • 为什么密码在sudo运行之前被收集?
  • 否;要么运行sudo -u user_account ./script_name,并让相关用户在提示时输入密码,要么配置sudo 以在没有密码的情况下运行命令。
  • @chepner,没有其他用户可以交互,这是一个仅由我运行的脚本,我想要一个单击解决方案,而不是在几台机器上多次输入 pwd

标签: linux bash macos terminal


【解决方案1】:

你可以使用heredoc,试试看:

sudo -S <<< "password from stdin" -u user_account ./script_name

【讨论】:

    猜你喜欢
    • 2015-10-06
    • 2016-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多