我有一个用户定义的命令,名为lock。执行命令后,系统将被锁定。如果我们只给予正确的密码,那么只会出现命令提示符。现在,我想从后台运行的脚本中执行lock命令。如果我们执行脚本lock命令被执行,但它不锁定当前终端.它只锁定后台bash。它不会在当前的bash中执行。如何解决这一问题?谢谢.
lock
5sxhfpxr1#
您可以使用DEBUG陷阱在命令提示符下执行命令之前执行命令:
trap 'command' DEBUG
这将在每个命令之前执行命令。当系统被锁定时,更改你的后台脚本来创建一个标志文件。并让您的命令检查该文件是否存在。就像这样:
if [[ -f lockfile ]] then p= while [[ "$p" != secret ]] do echo -n password: read p done rm -f lockfile fi
我不是说它是安全的。另一种方法:发射两枚炮弹下面的shell循环请求密码,然后运行上面的shell。上壳是正常的壳。当后台任务想要锁定终端时,它会杀死上层shell,将控制权返回给下层shell。
z9smfwbn2#
我今天有点事。为了解决这个问题,我不得不把剧本的来源。解决方案很简单source <script>
source <script>
2条答案
按热度按时间5sxhfpxr1#
您可以使用DEBUG陷阱在命令提示符下执行命令之前执行命令:
这将在每个命令之前执行命令。当系统被锁定时,更改你的后台脚本来创建一个标志文件。并让您的命令检查该文件是否存在。就像这样:
我不是说它是安全的。
另一种方法:
发射两枚炮弹下面的shell循环请求密码,然后运行上面的shell。上壳是正常的壳。当后台任务想要锁定终端时,它会杀死上层shell,将控制权返回给下层shell。
z9smfwbn2#
我今天有点事。为了解决这个问题,我不得不把剧本的来源。
解决方案很简单
source <script>