使用(PuTTY)PSFTP.exe
可以打开一个shell脚本来在Linux上执行某些操作。
在此示例中,我使用psftp.exe
打开get30.txt
文件。
%%PROJECT/ROOT_DIRECTORY%%\PuTTY\psftp.exe user@domain.nl -pw password -b "%%PROJECT/ROOT_DIRECTORY%%\Scripts\%%ENVIRONMENT/NAME%%\get30.txt"
在get30.txt
我有以下行动:
sudo su -l4097gps
cd /appl/gps/RIT/IN/30/RAP-T1
chmod 777 GP*.*
get -r /appl/gps/RIT/IN/30/RAP-T1
rm /appl/gps/RIT/IN/30/RAP-T1/*
quit
不幸的是psftp
无法识别sudo su
。
我用自己的用户登录后如何sudo
给不同的用户?
答案 0 :(得分:3)
这是不可能的。您发送的那些命令不是任意shell命令 - 它们是SFTP命令。它们碰巧看起来像shell命令(rm,cd等),但它们只是镜像shell等价物。在大多数SFTP实现中没有'sudo'命令,因此,你不能这样做。
我错的唯一情况是你使用自定义SFTP服务器和支持'su'的客户端,例如Van Dyke软件提供的服务器。但是,你在那里使用'su',并且需要进行身份验证,而不是使用'sudo'。
此外,请参阅serverfault stackoverflow上的这篇文章:
答案 1 :(得分:1)
sudo
是shell命令,而不是SFTP命令。
SFTP协议中没有sudo
或等效项,一般不在psftp
命令中。
虽然如果要连接到OpenSSH服务器,但可以使用以下命令指示它使用提升的权限运行SFTP子系统/服务器:
sudo /bin/sftp-server
不幸的是,psftp
不允许您更改用于启动SFTP服务器的命令。
您可以改用WinSCP:
open sftp://user:password@domain.nl/ -rawsettings SftpServer="sudo /bin/sftp-server"
但允许这项工作有很多限制。特别是sudo
可能不需要密码。有关详细信息,请参阅WinSCP常见问题How do I change user after login (e.g. su root)?
另请参阅converting PuTTY PSFTP script to WinSCP script指南。
(我是WinSCP的作者)