是否可以使用 SFTP 运行一些 SSH 命令?

是否可以使用 SFTP 运行一些 SSH 命令?

我对 Ubuntu 了解不多;这是我在这里的第一个问题。如果这个问题看起来无效,请原谅。

我被告知有可能运行一些使用 SFTP 的 SSH 命令。

如果可能的话,通过 SFTP 远程运行的支持命令列表是什么?(SSH 命令或 SSH 仿真);不是 PUT、GET 等。

我尝试实现的场景如下:

  1. 对大量文件进行压缩。
  2. 通过 sFTP 上传。
  3. 使用 sFTP 解压(如果支持);不能通过 SSH 解压

或者至少如果可能的话;创建一些 bash 脚本并通过 sFTP 运行

更新:我还有另一个相关问题;是否可以使用 SFTP 编辑文件?在远程文件中附加或编辑一行?

是否需要 sFTP 服务器兼容性?

请提供建议,并分享完整列表或进一步阅读的链接!谢谢

答案1

您只能使用 SFTP 在本地系统上运行命令。运行help以查看可用的命令:

sftp> help
Available commands:
bye                                Quit sftp
cd path                            Change remote directory to 'path'
chgrp grp path                     Change group of file 'path' to 'grp'
chmod mode path                    Change permissions of file 'path' to 'mode'
chown own path                     Change owner of file 'path' to 'own'
df [-hi] [path]                    Display statistics for current directory or
                                   filesystem containing 'path'
exit                               Quit sftp
get [-afPpRr] remote [local]       Download file
reget [-fPpRr] remote [local]      Resume download file
reput [-fPpRr] [local] remote      Resume upload file
help                               Display this help text
lcd path                           Change local directory to 'path'
lls [ls-options [path]]            Display local directory listing
lmkdir path                        Create local directory
ln [-s] oldpath newpath            Link remote file (-s for symlink)
lpwd                               Print local working directory
ls [-1afhlnrSt] [path]             Display remote directory listing
lumask umask                       Set local umask to 'umask'
mkdir path                         Create remote directory
progress                           Toggle display of progress meter
put [-afPpRr] local [remote]       Upload file
pwd                                Display remote working directory
quit                               Quit sftp
rename oldpath newpath             Rename remote file
rm path                            Delete remote file
rmdir path                         Remove remote directory
symlink oldpath newpath            Symlink remote file
version                            Show SFTP version
!command                           Execute 'command' in local shell
!                                  Escape to local shell
?                                  Synonym for help

从中可以看出,没有 SFTP 命令:

  • 允许在远程系统上运行命令。仅适用!于本地命令。
  • 允许附加或编辑文件。您可以获取文件,在本地编辑它并将其放回。

我并不指望存在这样的事情,因为 SFTP 的一个常见用例是监禁用户并提供文件访问权限,但不允许运行任何命令。

除了压缩之外,也许还可以使用以下-C选项sftp

 -C      Enables compression (via ssh's -C flag).

答案2

ssh 遵循以下结构:

ssh {user}@{IP} {command}

如果您不提供 {user},它将采用当前用户,如果您不添加命令,它将连接到系统并显示提示。如果您添加了命令,它将执行该命令。以下示例显示来自远程系统的日期:

ssh 1.1.1.1 date
[email protected]'s password:
Tue Nov  7 11:17:40 CET 2017

更多例子...

ssh 1.1.1.1 'df -H'
ssh 1.1.1.1 uname -mrs
ssh 1.1.1.1 lsb_release -a

 ssh 1.1.1.1 gzip /tmp/test
 [email protected]'s password:
 ssh 1.1.1.1
 $ pwd
 /tmp
 $ ls -ltr test.gz
 -rw-rw-rw- 1 rinzwind rinzwind 688 Nov  7 11:18 test.gz

是的,您可以将这样的行添加到批处理中,并让其执行该脚本。

相关内容