Peer Delivering
import subprocess
import re
def get_enodes_from_peers_info(peers_info):
enode_pattern = re.compile(r'enode: "([^"]+)",\s+id: "([^"]+)"')
enodes = enode_pattern.findall(peers_info)
return dict(enodes)
def get_peer_id_from_log(log):
peer_id_pattern = re.compile(r'peer=([a-fA-F0-9]+)')
match = peer_id_pattern.search(log)
return match.group(1) if match else None
def print_peer_ids_from_logs(logs):
unique_peer_ids = set()
print("Peer IDs in logs:")
for log in logs:
peer_id = get_peer_id_from_log(log)
if peer_id is not None and peer_id not in unique_peer_ids:
unique_peer_ids.add(peer_id)
print(f" {peer_id}")
return unique_peer_ids
command = "bor attach /var/lib/bor/bor.ipc --exec 'admin.peers'"
peers_info = subprocess.check_output(command, shell=True, text=True)
log_file_path = "/your-path/log"
with open(log_file_path, 'r') as log_file:
filtered_logs = [line for line in log_file if "Peer delivering stale transactions" in line]
peer_ids_from_logs = print_peer_ids_from_logs(filtered_logs)
enodes_dict = get_enodes_from_peers_info(peers_info)
print("\nExtracted Enodes:")
for enode, peer_id in enodes_dict.items():
print(f" {enode}: {peer_id}")
for peer_id_from_log in peer_ids_from_logs:
if peer_id_from_log in enodes_dict.values():
enode_to_remove = [k for k, v in enodes_dict.items() if v == peer_id_from_log][0]
print(f"\nRemoving enode: {enode_to_remove}")
remove_command = f'bor attach /var/lib/bor/bor.ipc --exec \'admin.removePeer("{enode_to_remove}")\''
subprocess.run(remove_command, shell=True, text=True)
print(f"Enode removed: {enode_to_remove}")
else:
print(f"\nPeer ID {peer_id_from_log} not found in peers.")Last updated