我对所有这些事情都很陌生,所以如果我愚蠢的话,我会道歉!我环顾四周,但似乎找不到任何可以解决这个问题的方法。我现在正在学习,所以非常感谢一些帮助!
我目前正在制作脚本,在我需要运行su (username)
的脚本的一部分内,然后让用户输入密码。有没有办法让su命令继续运行,直到运行以下命令后在输出中检测到特定用户名为止 -
ps aux | grep bash | awk '{print $1}' | sort | uniq
我希望继续尝试替换用户,直到他们更正(或取消脚本)或至少超过3次,然后自动注销。
我正在考虑使用'直到'循环或其他什么?
(until....(the output of command) = (username) run su (username))
对不起,如果我没有很好地解释自己,希望你们得到我所追求的内容!
我非常感谢你的帮助:)
干杯,杰克:)
-------------- EDIT ------------------------- EDIT ------ - - - - - - - - - -编辑 - - - - - - 由于我的代表,我无法回答我自己的问题。这是我写的内容。 (为这里的烂摊子道歉:S)
嘿大家,
我想我实际上已经开始工作了!使用以下脚本---
until [ "ps aux | grep bash | awk '{print $1}' | sort | uniq" = "(username)" ]
do
echo "Please enter password for (username)"
su (username)
done
现在看起来非常简单,它正在发挥作用。在它不能识别脚本的某些部分之前,例如'做'但我想我只需要语法和格式是正确的。
如果我能做些什么来让它变得更好,请告诉我,但我非常感谢大家的建议! :)我会考虑让它只运行一定次数,但我们会看到!
谢谢,
杰克:)答案 0 :(得分:1)
假设,目前我还没有办法测试这个假设,当密码输入失败时su返回非零,并且假设密码正确且su shell返回零干净地退出然后你应该能够使用su本身的返回代码来确定是否再次循环。如下所示。
while echo "Please enter password for (username)"; ! su (username); do
....
done