我尝试从服务器 A 运行命令来获取服务器 B 上目录的大小。
我使用此命令得到了空白结果:
ssh root@remoteIP -t "size=$(du -hs /var/www/somesite.com/dir1/dir2/uploads/ |
awk '{print $2}'); echo ${size} ; bash --login"
答案1
刚刚在本地测试过:
size=$(ssh xxx@yyy "du -hs ./.config | cut -f 1") ; echo $size
并在我的终端中得到了正确的输出:
size=$(ssh xxx@yyy "du -hs ./.config | cut -f 1") ; echo $size
8.0K
答案2
您要传递给命令的行SSH
是:
size=$(du -hs /some/dir | awk '{print $1}'; echo ${size} ; bash --login
你必须保护一些人物这条线从头开始解释的:$
和'
。
一个好方法保护
$
是为了使用简单的引号'
,因为双引号"
不行:'blah blah "blah blah" blah' # sounds easy
保护简单的引号如果您使用简单引号来包围您的行,则有点棘手:一种方法是在简单引号之前放置一个结束简单引号(是),然后环绕简单的引用双引号
"
最后用一个简单的引用重新打开:'blah blah '"'"'blah blah'"'"' blah' # mmh well
另外你想要的是打印第一的字段awk
,而不是第二个字段。所以print $1
,不是print $2
。
这是您受到良好保护的线路:
ssh root@remoteIP -t 'size=$(du -hs /some/dir | awk '"'"'{print $1}'"'"')
echo ${size} ; bash --login'