我正在运行以下脚本以在远程服务器上启动捕获并随后下载该文件.目前我必须用Ctrl+ 暂停它C并手动退出.
如何替换交互并定义触发器以终止tcpdump或捕获Ctrl+ C并将其传递到远程服务器中?
spawn ssh "$user_ssh\@$ssh_server"
expect {
"*password" { send "$pass\n"; exp_continue}
"root\@*" { }
timeout { puts "time out expecting password or bash"; exit 1 }
}
send "sudo tcpdump -i $intf -s0 -w $file -v\n";
interact
spawn scp "$user_ssh\@$ssh_server:$file" .
expect "password:"
send "$pass_ssh\n";
expect "100\%"
Run Code Online (Sandbox Code Playgroud) 我有一个问题在python文档中并不是很清楚(https://docs.python.org/2/library/stdtypes.html#set.intersection).
使用set.intersection时,结果集包含当前集或其他对象?如果两个对象具有相同的值但在内存中是不同的对象.
我使用它来比较先前从文件中提取的提取与来自互联网的新提取.两者都有一些类似的对象,但我想更新旧的.或者可能有一个更简单的替代方案来实现这一目标?如果实现集合,我会容易得多__getitem__.
oldApsExtract = set()
if (os.path.isfile("Apartments.json")):
with open('Apartments.json', mode='r') as f:
oldApsExtract = set(jsonpickle.decode(f.read()))
newApsExtract = set(getNewExtract())
updatedAps = oldApsExtract.intersection(newApsExtract)
deletedAps = oldApsExtract.difference(newApsExtract)
newAps = newApsExtract.difference(oldApsExtract)
for ap in deletedAps:
ap.mark_deleted()
for ap in updatedAps:
ap.update()
saveAps = list(oldApsExtract) + list(newAps)
with open('Apartments.json', mode='w') as f:
f.write(jsonpickle.encode(saveAps))
Run Code Online (Sandbox Code Playgroud)