Existe alguma maneira de ler arquivos do diretório virtual / proc usando o smbclient?

1

Existe alguma maneira de ler arquivos do diretório virtual /proc usando smbclient ?

Não há acesso root. Tanto o servidor quanto o cliente são máquinas Debian Linux. O servidor está executando o Samba 3. A versão do Smbclient é 4.0.6-Debian

Copiar arquivos de servidores / sistema de arquivos proc com get /proc/cpuinfo em resultado modo interativo do smbclient em um arquivo vazio que está sendo copiado.

    
por golem 28.05.2015 / 03:11

1 resposta

1

Você não pode copiar o arquivo porque o smbclient / smbget não verifica o tamanho do arquivo depois que ele é aberto. Não tem nada a ver com permissões.

Você deve verificar como isso é feito no dolphin (gerenciador de arquivos kde) porque ele pode copiar arquivos remotos do proc, mesmo que eles reportem tamanho zero). Você pode obter o código-fonte através do git clone git: //anongit.kde.org/kde-baseapps, mas não tenho certeza se o manuseio do smb está incluído lá.

Eu não sei o que você quer fazer, mas talvez você possa escrever um script simples no servidor que copie o conteúdo / proc / cpuinfo para um arquivo 'normal' e obter este arquivo via smb.

Se você quiser apenas obter o conteúdo do arquivo / proc em outro computador e ele pode ser outra coisa (não o samba), você pode tentar usar, por exemplo, scripts cgi.

Exemplo de script que eu escrevi uma vez e mostra o uso atual da 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"

Saída na página da web:

CPU:100%
TOTAL:101
IDLE:0     
    
por 15.06.2015 / 04:59