recv()
işlevinin nasıl çalıştığını anlamakta zorlanıyorum. Paramiko Channel.recv() tam olarak nasıl çalışır?
http://docs.paramiko.org/en/1.13/api/channel.html#paramiko.channel.Channel.recv
Bunun bir yığın bir veri işlevi çağırmak her zaman alıyor anlıyoruz, fakat kimse bu verilerin yapının veya boyutuna detaylandırabileceğiniz? Ben bir komutdate
göndermek Diyelim, ben dikkat edin:
- 1 okuma alır: "tarih"
- 2 okuma alır: Gerçek yanıt (Pzt Haz 2014 9 00:04:17 CDT)
- 3 okuma alır: komut istemi
Ancak bu, terminalde rastgele görünen iletileri ayıklarken nasıl işler?
Gerçek desen maksimum bayttan (nbytes
) daha az olduğu sürece önceki model doğru mu?
nbytes
'u aşarsa ne olur?
isteğe göre, aşağıda bir kod parçası eklenmiştir: bir socket.recv(), bunun, herhangi bir yapı veya boyutuna sahip değildir için
while reads<maxReads:
resp = self.__chan.recv(maxBytes)
print resp
self.__buffer += resp
if resp.endswith('$ ') or resp.endswith('# '):
break
reads += 1
Bu bayt_sayisi kadar almalıdır: Eğer bekliyor veri parçasını elde edene kadar
Sen yaygın bir döngüde recv() kullanın. Daha büyük bir şey ve maksimum byte yığınına kadar giderdi. Daha az herhangi bir şey ve her şey, maksimum boyuttan daha az olduğu için geri dönecektir. Bir dahaki sefere channel.recv çağırdığınızda, bu son ısırmanın kaldığı yerden devam eder. Komutta bıraktığı yerden nerede olursa olsun, sadece belirtilen maksimum bayt sayısını alacaktır. Stderr'e gönderilen her türlü sorgunun recv_stderr kullanması gerekir. Bu, sorunuza cevap verip vermediğinden emin değil. – Bob
bunlardan biri ummm :) ... Bir komut göndermek ve recv komutunu çağırmak bana gerçek cevabı vermek yerine komutun kendisini alır – user3388884
Gönderdiğiniz ve yeniden yazdığınız kodu görebilir miyiz? Onu nasıl yazdığın basit bir şey olabilir, farketmemiş olabilirsiniz. – MikeRixWolfe