Linux 如何在sudo命令之后执行多个命令

Linux 如何在sudo命令之后执行多个命令,linux,shell,unix,Linux,Shell,Unix,我需要运行批处理来登录服务器,进入sudo su-username并运行特定命令 我尝试了以下代码: putty username@servername -pw password -m myshell.sh myshell.sh: #!/bin/sh sudo su - username cd to particular folder then tail a file 我在SUDO中,但是脚本在我注销之前就开始了。 你可以使用SH-C,然后在命令之间使用分号,我会考虑注释中建议的解决方案,只

我需要运行批处理来登录服务器,进入
sudo su-username
并运行特定命令

我尝试了以下代码:

putty username@servername -pw password -m myshell.sh
myshell.sh:

#!/bin/sh
sudo su - username
cd to particular folder
then tail a file

我在SUDO中,但是脚本在我注销之前就开始了。

你可以使用SH-C,然后在命令之间使用分号,我会考虑注释中建议的解决方案,只是让整个脚本运行为SUDO。< /P>

sudo sh -c "cd /tmp;pwd;cd /dev;pwd""

用下面的命令更新了我的shell文件,它成功了:

#!/bin/sh
sudo su - username << block
cd /; 
tail filename;
block
#/垃圾箱/垃圾箱

sudo su-username如果以sudo(使用密码)运行每个命令,则以root用户身份登录并在没有sudo的情况下运行所有命令。@Alfasin:谁说他有root访问权限?除非需要CD,否则最好跟踪文件,在TAIL命令中提供完整路径。假设目录不存在,您会在屏幕上看到什么错误消息?他会说文件丢失了,但这可能不是显而易见的,因为他在另一个(错误的)目录中查找该文件。也有可能是文件存在于错误的目录中。@tvCa你在胡说八道:以拥有权限的用户的身份连接你说的是ROOT,现在你说:any user.sh-c提示输入密码,而我没有。我使用“sudosu-username”并且不要求输入密码,然后我就可以执行我的命令了。但是在使用sudo运行脚本时,会提示输入密码。@SurajModi:它需要哪个密码?------
sh-c
不应要求输入任何密码,
sudo
根据使用的参数和
/etc/sudoers
中的配置要求输入密码。更干净、更安全的方法是告诉
sudo
运行命令直接作为用户
username
运行,而不是作为
root
运行
su
。此外,您不需要使用
cd
,只需指定文件的完整路径即可。根据您的示例,它将是:
/filename
--下面是首选命令:
sudo-u username tail/filename
。不幸的是,在
/etc/sudoers
中可能会禁用这种方式使用
sudo
注意:在脚本中,不需要通过
分隔命令当它们已经由换行符分隔时。