我正在尝试通过lftp获取ftp服务器的已用存储空间。
lftp :~> open username:password@IP
lftp username@IP:~> du
897146 ./volume(sda1)
897146 .我想从sh脚本中获取897146的值。
这就是我到目前为止得到的:
#!/bin/bash
FTP_PASS=password
FTP_HOST=IP
FTP_USER=username
LFTP=lftp
lftp << EOF
open ${FTP_USER}:${FTP_PASS}@${FTP_HOST}
FOO="$(du)"
quit
EOF
echo "$FOO"但我得到了
Unknown command `FOO=9544 ./logs'.
Unknown command `9636'.发布于 2021-09-26 08:44:24
FTP会话中的du命令将在lftp命令输出中输出。因此,要获得du命令的输出,您需要在变量中捕获lftp命令的输出:
#!/usr/bin/env bash
FTP_PASS=password
FTP_HOST=IP
FTP_USER=username
FOO=$(lftp << EOF | filter_out_things_unrelated_to_du
open ${FTP_USER}:${FTP_PASS}@${FTP_HOST}
du
quit
EOF
)
echo "$FOO"您可能需要从远程FTP服务器过滤出FTP会话头和MOTD,以及与du输出无关的任何内容。
https://stackoverflow.com/questions/69333099
复制相似问题