如何使用curl创建sftp文件并更改文件权限



我在服务器A内部,试图将文件复制到服务器B的特定目录,然后想在复制后更改服务器B内部的文件权限。

我正在Server-A 中运行以下命令

curl --insecure --user user1:psswd1 -T ./tmp/xml-file/D-2022-TEST1.xml sftp://server-B:/mappings/ && chmod 775 ./mappings/D-2022-TEST1.xml

文件被复制,命令成功完成,没有任何错误,但权限部分不起作用。我没有看到目标服务器中文件权限的更改。

输出:

% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
Dload  Upload   Total   Spent    Left  Speed
100   425    0     0  100   425      0   1839 --:--:-- --:--:-- --:--:--  1839
100   425    0     0  100   425      0   1839 --:--:-- --:--:-- --:--:--  1839

您的命令由两部分组成

curl --insecure --user user1:psswd1 -T ./tmp/xml-file/D-2022-TEST1.xml sftp://server-B:/mappings/

使用curl和将文件复制到server-B

chmod 775 ./mappings/D-2022-TEST1.xml

它会更改本地文件CCD_ 3(如果存在(的权限。

如果您想在远程server-B上执行此命令,您可能需要ssh(可能还有sshpass,例如

ssh user1@server-B chmod 775 ./mappings/D-2022-TEST1.xml

要避免密码提示,请使用sshpass


尝试curl的选项--create-file-mode <mode>

curl --insecure --user user1:psswd1 --create-file-mode 775 -T ./tmp/xml-file/D-2022-TEST1.xml sftp://server-B:/mappings/

另一种解决方案是curl-Q--quote选项。

-Q,--quote

(FTP SFTP(向远程FTP或SFTP服务器发送任意命令。报价命令在传输发生之前发送(确切地说,是在FTP传输中的初始PWD命令之后(。要使命令在成功传输后发生,请在它们前面加一个破折号"-"。[…]

[…]

chmod模式文件

chmod命令修改指定文件的文件模式位。模式操作数是一个八进制整数模式数。

尝试

curl --insecure --user user1:psswd1 -Q "-chmod 775 /mappings/D-2022-TEST1.xml" -T ./tmp/xml-file/D-2022-TEST1.xml sftp://server-B:/mappings/

最新更新