我们知道Python允许在Windows下启用混杂模式
s.ioctl(socket.SIO_RCVALL, socket.RCVALL_ON)
Run Code Online (Sandbox Code Playgroud)
但是,RCVALL_*和SIO_*仅在Windows中可用.使用C socket api,在Linux中,可以使用:
ethreq.ifr_flags |= IFF_PROMISC;
ioctl(sock, SIOCSIFFLAGS, ðreq);
Run Code Online (Sandbox Code Playgroud)
或通过,
setsockopt(sock, SOL_PACKET, PACKET_ADD_MEMBERSHIP, PACKET_MR_PROMISC)
Run Code Online (Sandbox Code Playgroud)
python socket API中是否有任何选项允许我们在Linux中设置混杂模式?
我一直在尝试使用python 2.6中的标准GPS(gps.py)模块.这应该充当客户端并从Ubuntu中运行的gpsd读取GPS数据.
根据客户端设计的GPSD网页(GPSD Client Howto)的文档,我应该能够使用以下代码(从示例中略微修改)获取最新的GPS读数(lat long是我主要感兴趣的)
from gps import *
session = gps() # assuming gpsd running with default options on port 2947
session.stream(WATCH_ENABLE|WATCH_NEWSTYLE)
report = session.next()
print report
Run Code Online (Sandbox Code Playgroud)
如果我重复使用next(),它会从队列底部(从会话开始时)开始给出缓冲值,而不是LATEST Gps读取.有没有办法使用这个库获取更新的值?在某种程度上,寻求流的最新价值?
有没有人有一个代码示例使用这个库来轮询gps并获得我正在寻找的价值?
这是我想要做的:
我想创建一个Android活动,用于设置与远程设备的SSH会话(通过Wifi)并在远程设备上执行一些linux命令.任何人都有一个快速,简短的例子,用于在Android中使用Trilead库连接,验证和发送远程命令?如果只是尝试快速执行SSH连接/命令执行,Connectbot源(唯一可以找到非维护库源的地方)是非常庞大且耗时的.我之前找到了sshJ库,其中有很好的文档示例和技巧,但遗憾的是Android缺少sshJ所需的一些Java.Util类.
我在Trilead中寻找一些东西(这是我之前发现的sshJ例子):
final SSHClient ssh = new SSHClient();
ssh.loadKnownHosts();
ssh.connect("localhost");
try {
ssh.authPublickey(System.getProperty("user.name"));
final Session session = ssh.startSession();
try {
final Command cmd = session.exec("ping -c 1 google.com");
System.out.print(cmd.getOutputAsString());
System.out.println("\n** exit status: " + cmd.getExitStatus());
} finally {
session.close();
}
} finally {
ssh.disconnect();
}
Run Code Online (Sandbox Code Playgroud)