/proc
가상 디렉터리에서 파일을 읽는 데 사용할 수 있는 방법이 있습니까 smbclient
?
루트 액세스가 없습니다. 서버와 클라이언트는 모두 Debian Linux 시스템입니다. 서버가 Samba 3을 실행 중입니다. Smbclient 버전은 4.0.6-Debian입니다.
smbclient의 대화형 모드를 사용하여 서버의 /proc 파일 시스템에서 파일을 복사하면 get /proc/cpuinfo
빈 파일이 복사됩니다.
답변1
smbclient/smbget은 파일을 연 후 크기를 확인하지 않기 때문에 파일을 복사할 수 없습니다. 권한과는 아무런 관련이 없습니다.
크기가 0이라고 보고되는 경우에도 proc에서 원격 파일을 복사할 수 있으므로 돌핀(kde 파일 관리자)에서 어떻게 수행되는지 확인해야 합니다. git clone git://anongit.kde.org/kde-baseapps를 통해 소스 코드를 얻을 수 있지만 smb 처리가 포함되어 있는지 확실하지 않습니다.
무엇을 하려는지 모르겠지만 /proc/cpuinfo의 내용을 "일반" 파일에 복사하고 smb를 통해 해당 파일을 가져오는 간단한 스크립트를 서버에 작성할 수 있습니다.
다른 컴퓨터에서 /proc 파일의 내용을 가져오려는 경우(삼바가 아닌) 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