[当我需要使用具有足够特权的用户通过SSH将文件从本地服务器(服务器A)复制到远程服务器(服务器B)时,我会像下面这样成功完成此操作
localpath='/this/is/local/path/file1.txt'
remotepath='/this/is/remote/path/'
mypass='MyPassword123'
sshpass -p $mypass scp username@hostname:$localpath $remotepath
现在,我必须使用没有足够特权复制的用户将文件从服务器A传输到服务器C。然后一次我已连接到服务器C,因此需要发送su
,以便能够发送诸如cd
,ls
等的命令。
手动,我通过SSH这样访问服务器C:
[root@ServerA ~]# ssh username@hostname You are trying to access a restricted zone. Only Authorized Users allowed. Password: Last login: Sat Jun 13 10:17:40 2020 from XXX.XXX.XXX.XXX ServerC ~ $ ServerC ~ $ su Password: ServerC /home/myuser # ServerC /home/myuser # cd /documents/backups/ ServerC /documents/backups #
目前
myuser
具有超级用户权限,我可以发送命令。
然后,如何在连接到服务器C后自动执行将文件从服务器A复制到服务器C并需要发送su
的任务?
到目前为止,我已经尝试过这样做:
sshpass -p $mypass ssh -t username@hostname "su -c \"cd /documents/backups/ && ls\""
它要求输入
su
的密码,并且能够发送cd
和ls
,但是使用此命令,我没有将文件从服务器A复制到服务器C,只是半自动访问服务器C并在服务器C中发送su
。
预先感谢您的帮助。
[当我需要使用具有足够特权的用户通过SSH将文件从本地服务器(服务器A)复制到远程服务器(服务器B)时,我会成功执行此操作,例如localpath ='/ this / is / local / path / file1 ....
由于您具有服务器C上su
的权限,因此,请首先将自己添加到服务器C的/etc/sudoers
中。如有必要,安装sudo
。 sudo
比su
的优势在于它可以接受密码而无需提示。
然后,您可以使用tar
和管道,如下所示: