2017-02-24 111 views
0

我对于unix和脚本编程不熟悉,需要您对以下方案的帮助。 这些都是我sh文件无法在shell脚本中执行多个命令

#!/bin/bash 
usrun xyz 
whoami 

当我打电话从腻子这个庆典文件的要求我为我的XYZ用户密码的一些其他信息,以正确登录在XYZ用户的内容。 成功登录后,putty中的$符号更改为#### xyz $,所以我猜测它为xyz用户打开了一个新会话。 但是,之后,whoami命令没有得到执行。只有在输入exit之后,whoami命令才会执行。

为什么会发生这种情况?如何在成功验证xyz用户后执行whoami命令?

####表示我目前通过putty连接到的服务器的最后四位数字。

+1

Shell脚本通常是由它们的目的是机器执行触摸。如果您想远程运行它们,则必须在执行时或脚本中包含该信息。有很多答案已经涵盖了关于对包括这个远程服务器的远程服务器执行shell脚本的这些信息:http://unix.stackexchange.com/questions/87405/how-can-i-execute-local-script-on-remote- machine-and-include-arguments –

+0

听起来像'usrun'打开一个新shell;你的脚本阻塞,直到shell退出,然后*运行'whoami'。你需要一些方法来指定'whoami'作为'usrun'应该执行的命令。 – chepner

+0

感谢Michael..for link ..虽然我无法使这个脚本工作。 –

回答

0

没有任何参数的usrun命令会阻止bash脚本的执行。因此,直到命令没有完成(当你输入exit时),下一个命令(whoami)不会被执行。

如果你想登录到机器并执行命令你应该尝试:

#!/bin/bash 
usrun -u xyz whoami 

-u选项允许你指定用户和未来可以提供的命令来执行。

如果你想使用腻子在远程计算机上执行多个命令我建议你遵循类似这篇文章的内容:

https://superuser.com/questions/1103873/how-to-type-commands-in-putty-by-creating-batch-file

+0

嗨Christián..I试过你的建议上面的方法,但它并不适合我,因为我的工作时试图执行命令我得到许可被拒绝例外.. –

+0

我已经做usrun它基本上提供特权用户的访问控制一些基本的阅读,在他们的小说网站也明确指出usrun -u XYZ“命令”将执行,但在我的情况它没有发生..它直接尝试执行没有身份验证提示的命令,这是导致权限被拒绝的问题.. –

+0

你是否建议#!/bin/bash usrun xyz -u xyz whoami?我无法格式化我的答案,因为我正在使用该应用发布评论。 –