这里已经存在一些关于将命令作为另一个用户运行的问题.但是,问题和答案集中在单个命令而不是一组长命令上.
例如,请考虑以下脚本:
#!/bin/bash
set -e
root_command -p param1 # run as root
# these commands must be run as another user
command1 -p 'parameter with "quotes" inline'
command2 -p 'parameter with "quotes" inline'
command3 -p 'parameter with "quotes" inline'
Run Code Online (Sandbox Code Playgroud)
这里有几点需要注意:
最后三个命令必须作为另一个用户使用su或运行sudo.在示例中有三个命令,但假设还有更多...
命令本身使用单引号和双引号.
上面的第二点阻止使用以下语法:
su somebody -c "command"
Run Code Online (Sandbox Code Playgroud)
...因为命令本身包含引号.
什么是"分组"命令并在另一个用户帐户下运行它们的正确方法?
嗨,我想知道为什么我收到此错误.我有这个名为mock的目录,里面有另外3个目录.我试图使用下面的代码将模拟目录中的所有项目复制到projweek目录中.
cp /mock/* ~/projweek
Run Code Online (Sandbox Code Playgroud)
但是我得到了这个错误
cp: cannot stat ‘mock/*’: No such file or directory
Run Code Online (Sandbox Code Playgroud)
关于为什么那样的任何想法?
我无法弄清楚这有什么问题.当我在终端中运行并输入密码时,没有任何反应,但如果我在终端中单独运行每个命令,它就可以工作.谢谢!
#!/bin/bash
sudo su;
mkdir /opt/D3GO/;
cp `pwd`/D3GO /opt/D3GO/;
cp `pwd`/D3GO.png /opt/D3GO/;
cp `pwd`/D3GO.desktop /usr/share/applications/;
chmod +x /opt/D3GO/D3GO
Run Code Online (Sandbox Code Playgroud) 我有以下内容
#!/bin/bash
USER='scott'
PASS='tiger'
ssh -t $USER@server006.web.com "sudo su - http"
Run Code Online (Sandbox Code Playgroud)
这是Works,但我试图让它在之后运行一个脚本,如果我这样做,使用-c或<
该脚本像这样做一个grep:
grep -i "Exception:" /opt/local/server/logs/exceptions.log | grep -e "|*-*-*:*:*,*|" | tail -1 | awk -F'|' '{print $2}' >> log.log
Run Code Online (Sandbox Code Playgroud)
这也适用于它自己,但我需要http才能做到这一点.
我也不能把SCP的输出输回到server001,所以我被困在这里,
任何想法都会被接受赞赏.本
如果在shell脚本中我写
chroot /home/mayank/chroot/codebase
cd SBC
Run Code Online (Sandbox Code Playgroud)
当我运行这个 shell 脚本时,它确实进入chroot但不执行命令cd SBC,当我退出时chroot它会执行cd SBC。
如何通过 shell 脚本实现某些功能chroot并执行命令chroot?
我使用 bash 的时间不超过 6 个小时,现在我正在尝试创建一个菜单,让您可以做一些“有趣”的事情:D。
我的问题是if 语句检查您是否处于 sudo 模式。我想有3个条件:
2)
if [ "$EUID" -ne 1 ]
then
echo "Checking if you are in sudo mode..."
echo "Error, please insert your password:"
sudo ls /root
if [ "$EUID" -ne 1 ]
then
echo -e "\nCould not authenticate the user."
echo -e "For security reasons the application will be closed."
exit
else
echo "==============================================================="
echo -e "ALL …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用ssh连接执行远程本地脚本.我已经阅读了有关它语法的文档.但我的问题是,在运行脚本之前,我需要执行bash和源环境变量.
这看起来适合我,但它没有源命令:
ssh [user]@[server] 'bash -s' < [local_script]
Run Code Online (Sandbox Code Playgroud)
我用EOF尝试过这样的东西,但它对我也不起作用:
#!/bin/bash
/usr/bin/ssh "$user@$$host" <<EOF
bash -s
source /dir/to/profile/.profile
source /dir/to/env/set/env.sh
/path/to/script/script.sh stop
EOF
Run Code Online (Sandbox Code Playgroud)
您对这种远程命令的实现有什么想法吗?我必须在环境设置之前获取配置文件,否则它会给出异常.但主要问题是关于来源.
也许这是一个简单的问题,但我没有任何想法.提前感谢您的所有答案.
我是编写bash脚本的完全菜鸟.我正在尝试执行以下操作:
#!/bin/bash
mkdir New_Project
cd New_Project
pipenv install ipykernel
pipenv shell
python -m ipykernel install --user --name==new-virtual-env
jupyter notebook
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,在执行之后pipenv shell,它启动新shell,然后不执行最后两个命令.当我退出新shell时,它会尝试执行剩余的行.有没有办法让脚本从头到尾运行所有这些命令?
我需要运行批处理以登录到服务器,进入sudo su - username并运行特定命令。
我尝试下面的代码:
putty username@servername -pw password -m myshell.sh
Run Code Online (Sandbox Code Playgroud)
myshell.sh:
#!/bin/sh
sudo su - username
cd to particular folder
then tail a file
Run Code Online (Sandbox Code Playgroud)
我进入sudo,但此后脚本卡住,直到我注销。
我有一个脚本需要通过 ssh 执行作为另一种用途,有没有办法像这样传递整个脚本:
ssh -t user@server.com sudo -u user2 sh -c << EOF
cd /home
ls
dir=$(pwd)
echo "$dir"
echo "hello"
....
EOF
Run Code Online (Sandbox Code Playgroud)
返回:sh: -c: 选项需要参数
单独使用 ssh和sudo不是一种选择,并且不可能将 .sh 文件直接放在计算机上。