有什么方法可以使用从虚拟/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