Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如果登录时不正确,则编写Bash脚本以注销。需要指导吗_Linux_Bash_Login_Logout - Fatal编程技术网

Linux 如果登录时不正确,则编写Bash脚本以注销。需要指导吗

Linux 如果登录时不正确,则编写Bash脚本以注销。需要指导吗,linux,bash,login,logout,Linux,Bash,Login,Logout,我正在尝试编写一个Bash脚本,如果用户无法获得安全问题,它将注销用户 我需要找到一个数组或多个if条件来反映这一点。我知道有很多子功能,比如停止任何覆盖输入(CTRL+Z等) 下面是我到目前为止的脚本,下面是我得到的错误。我不想要答案,只是想要寻找什么的方向。它甚至没有提示安全性问题,在本例中直接将root用户注销 ./txtscript: line 13: [: =: unary operator expected *****更新******* 好吧,我把那部分修好了。现在,脚本具有以下

我正在尝试编写一个Bash脚本,如果用户无法获得安全问题,它将注销用户

我需要找到一个数组或多个if条件来反映这一点。我知道有很多子功能,比如停止任何覆盖输入(CTRL+Z等)

下面是我到目前为止的脚本,下面是我得到的错误。我不想要答案,只是想要寻找什么的方向。它甚至没有提示安全性问题,在本例中直接将root用户注销

./txtscript: line 13: [: =: unary operator expected

*****更新*******

好吧,我把那部分修好了。现在,脚本具有以下内容

echo“代码名是什么?” 读取代码名 如果[$CODENAME=“Cole Server”]; 然后

当我运行脚本时,我得到错误“/txtscript:line 14:[:=:预期的一元运算符”

第14行是:如果[$CODENAME=“Cole Server”]


一般来说,我甚至没有找到一个好的网站/文章来真正解释一元运算符预期的错误,所以我不知道这意味着什么。非常感谢任何帮助。

好吧,问题是,
$codename
没有填写

因此,13号线正在运行:

if [ = "Cole Server" ];  # note: the $codename was expanded to emptiness
您希望在脚本中编写的内容是:

if [ "$codename" = "Cole Server"];
这将评估为

if [ "" = "Cole Server"];
这至少在语法上是有效的。您仍然需要实际分配到
codename
某个地方,而您目前没有这样做

然而,我认为整个方法可能是错误的。 您为他们提供了一个交互式bash会话,他们可以在那里执行各种操作,比如按
Ctrl+Z
将其挂起


这是一个有趣的小游戏,但是如果你想做一个严肃的安全性测试,我担心(:

我把read$codemame设置成了$CODENAME,而不是$CODENAME,这也是导致问题的原因

这是固定的,工作完美。现在我将实现一个陷阱命令,以阻止人们试图绕过脚本


如果有人有任何资源或示例陷阱来阻止CTRL C、CTRL Z和SIG术语,请告诉我!

除非你有充分的理由不这样做,否则请始终引用你的变量。你从未读过代码名。我刚刚意识到了这一点。这就是为什么我喜欢让人们检查我的代码。我永远不会费心检查这部分lol。谢谢你。哈哈,新手错了.我完全忽略了lol.总是喜欢有新鲜的眼睛来检查我的代码!
if [ "" = "Cole Server"];