最终目标是在Redhat机器上的shell脚本内部运行这个命令。我在Ubuntu机器上使用这个脚本已经很多年了,但是我在Redhat上的特权更少了。我将在下面描述我尝试的解决方案,但我想先提出问题。
read -r val1 val2 val3 <<<$(python3 script_name.py "$json_args")
在RedHat中,我不得不安装python/pip3.5作为sudo…这样地。。。
sudo yum -y install https://centos7.iuscommunity.org/ius-release.rpm
sudo yum -y install python35u
sudo yum -y install python35u-pip
sudo pip3.5 install
sudo pip3.5 install boto3
sudo pip3.5 install awscli
不同的机器可能有不同的python版本,所以我为
python3
在.bash_配置文件中,相同的shell脚本可以在任何地方工作。
echo 'alias python3="python3.5"' >>~/.bash_profile
现在。。。一切都被巨蟒锁住了…我可以进口Boto3,但不能用…从python3命令行演示…
>>> import boto3
>>> boto3.__version__
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: module 'boto3' has no attribute '__version__'
所以我试着用“sudo”来运行python3,但是…
sudo: python3: command not found
所以我给bashrc加了个别名…
echo 'alias sudo="sudo "' >>~/.bashrc
伟大的!现在一切似乎都正常了!我终于可以运行我最初想要的命令(见下文)。
sudo python3 script_name.py args
或者更具体地说(
注意添加的
sudo
与我的介绍相比……
read -r val1 val2 val3 <<<$(sudo python3 script_name.py "$json_args")
在指挥线上表现出色!
…直到我把它放进一个shell脚本。现在我又回到原来的错误…
sudo:python3:找不到命令
我试过各种各样的东西…正在将“sudo”别名放入脚本中…把它放在/root/.bashrc中…其他一些随机的事情。
在这一点上,我怀疑我也可以用sudo来运行bash脚本…但这开始导致各种其他问题,我怀疑这是一个相当糟糕的安全实践。我觉得我已经偏离了轨道,这里有一些更聪明的解决方案。
有什么主意吗
-
如何在没有sudo的情况下运行python3.5并使其工作
-
如何获得
sudo python3
在shell脚本中工作而不以sudo形式运行shell脚本?
提前谢谢
编辑
根据以下@julianloaiza和@terryacmen的建议,
chown -R
允许我运行python3而不使用
苏多
…但当我这样做的时候,Boto3不能再授权我了。检查
sys.path
从python的角度来看,只有一个区别…那是
-
'/root/.local/lib/python3.5/site-packages'
-
带/不带sudo有:
'/home/ec2-user/.local/lib/python3.5/site-packages'
两者都有
'/usr/lib/python3.5/site-packages'
最后一个(包含我显式安装的libs)。
可能会发生什么…
/root/.local/lib/python3.5/site-packages
没有关于awscli或boto的内容…
/home/ec2-user/.local/lib/python3.5/site-packages
里面有“awscli”和“botocore”的东西。也一样
/usr/lib/python3.5/site-packages
…它也有boto3和其他libs,我明确地输入。
python可能会因为查找而感到困惑吗?
/home/ec2-user/.local/lib/python3.5/site-packages
之前
/usr/lib/python3.5/站点包
当我没有以“sudo”身份登录时?