如何拆分SSH地址+路径?

How to split an SSH address + path?

A Python 3 函数接收 SSH 地址,如 user@132.243.32.14:/random/file/path。我想用 paramiko 库访问这个文件,它需要用户名、IP 地址和文件路径。

知道输入有时会省略用户名,如何将此地址拆分为这 3 个部分?

使用

not set(p).isdisjoint(set("0123456789$,")) 其中 p 是 SSH。

str.partitionrpartition 会做你想做的事:

def ssh_splitter(ssh_connect_string):
    user_host, _, path = ssh_connect_string.partition(':')
    user, _, host = user_host.rpartition('@')
    return user, host, path

print(ssh_splitter('user@132.243.32.14:/random/file/path'))
print(ssh_splitter('132.243.32.14:/random/file/path'))

给出:

('user', '132.243.32.14', '/random/file/path')
('', '132.243.32.14', '/random/file/path')