有没有办法使用 smbclient 从虚拟 /proc 目录中读取文件?

有没有办法使用 smbclient 从虚拟 /proc 目录中读取文件?

有什么方法可以使用从虚拟/proc目录读取文件吗smbclient

没有根访问权限。服务器和客户端都是 Debian Linux 机器。服务器运行Samba 3。Smbclient版本是4.0.6-Debian

使用 smbclient 的交互模式从服务器 /proc 文件系统复制文件get /proc/cpuinfo会导致复制空文件。

答案1

您无法复制该文件,因为 smbclient / smbget 在打开文件后不会检查文件的大小。它与权限无关。

您应该检查它是如何在 dolphin(kde 文件管理器)中完成的,因为它可以从 proc 复制远程文件,即使它们报告大小为零)。您可以通过 git clone git://anongit.kde.org/kde-baseapps 获取源代码,但我不确定其中是否包含 smb 处理。

我不知道你想做什么,但也许你可以在服务器上编写简单的脚本,将 /proc/cpuinfo 内容复制到“普通”文件并通过 smb 获取该文件。

如果您只想获取另一台计算机上的 /proc 文件的内容,并且它可以是其他内容(不是 samba),您可以尝试使用例如 cgi 脚本。

我曾经编写的显示当前 CPU 使用情况的示例脚本:

#!/bin/bash

echo Content-type: text/plain
echo


PREV_TOTAL=0
PREV_IDLE=0

CPU=(`cat /proc/stat | grep '^cpu '`) # Get the total CPU statistics.
unset CPU[0]                          # Discard the "cpu" prefix.
PREV_IDLE=${CPU[4]}                        # Get the idle CPU time.
PREV_TOTAL=(`cat /proc/stat | grep '^cpu ' | awk '{ sum = $2 + $3 + $4 } END { print sum }'`)

# Calculate the CPU usage since we last checked.
sleep 1

CPU=(`cat /proc/stat | grep '^cpu '`) # Get the total CPU statistics.
unset CPU[0]                          # Discard the "cpu" prefix.
IDLE=${CPU[4]}                        # Get the idle CPU time.
TOTAL=(`cat /proc/stat | grep '^cpu ' | awk '{ sum = $2 + $3 + $4 } END { print sum }'`)


let "DIFF_IDLE=$IDLE-$PREV_IDLE"
let "DIFF_TOTAL=$TOTAL-$PREV_TOTAL"
let "DIFF_USAGE=(1000*$DIFF_TOTAL/($DIFF_IDLE+$DIFF_TOTAL))/10"


echo -en "\rCPU:$DIFF_USAGE%\nTOTAL:$DIFF_TOTAL\nIDLE:$DIFF_IDLE                  "
# Remember the total and idle CPU times for the next check.
PREV_TOTAL="$TOTAL"
PREV_IDLE="$IDLE"

网页输出:

CPU:100%
TOTAL:101
IDLE:0     

相关内容