我需要从服务器B中的服务器A运行脚本。在ssh进入服务器B之后,我运行了以下命令:
sudo ssh root@ip_A 'bash -s' < root/work/task.sh
我收到以下错误:
-bash: /root/work/task.sh: Permission denied.
在服务器A上,我完成了sudo chmod 777 task.sh
。
请谢谢。
答案 0 :(得分:3)
即使没有连接多个文件,这也是cat
增加价值的少数几个地方之一:
sudo cat /root/work/task.sh | ssh root@ip_A 'bash -s'
因为在启动调用的程序之前shell会运行<
等重定向,所以sudo
无法更改用于此类重定向的权限(它尚未启动!)。相比之下,sudo cat somefile
首先运行sudo
,然后然后 cat
,然后会打开somefile
;由于sudo
在这种情况下首先运行,因此可以使用升级的权限。
答案 1 :(得分:0)
我测试案例1:
sudo ssh root@ip_A 'bash -s < /root/work/task.sh'
哪个task.sh保存在ip_A中,并且有效 和测试用例2:
sudo ssh root@ip_A 'bash -s' < /root/work/task.sh
并且它也有效,ip_A中没有task.sh,只有本地主机中的此文件。
不知道你的问题,你可以告诉我们你的tash.sh吗?