我正在使用 tcprelay.pyusbmuxd将本地端口 2222 转发到远程端口 22,这样我就可以通过 USB 通过 SSH 连接到我的 iPhone。如果我运行
python ~/Downloads/usbmuxd-1.0.8/python-client/tcprelay.py -t 22:2222
它成功转发了端口,在另一个终端窗口中,我可以运行
ssh -l root -p 2222 127.0.0.1
并成功通过 USB 使用 SSH。但是,我尝试将其合并为一个命令,并且
python ~/Downloads/usbmuxd-1.0.8/python-client/tcprelay.py -t 22:2222
ssh -l root -p 2222 127.0.0.1
不起作用。运行 python 命令后,我无法在该窗口中运行任何其他命令。我该如何将这两个命令放在一起?
谢谢
答案1
根据 MadMike 的回答,您可以使用以下命令:
python ~/Downloads/usbmuxd-1.0.8/python-client/tcprelay.py -t 22:2222 &
while ! (: < /dev/tcp/127.0.0.1/2222) 2>/dev/null; do
sleep 1
done
ssh -l root -p 2222 127.0.0.1
这将在后台执行 Python 程序,然后等待(每秒检查一次)直到内部端口 2222 打开。然后它将运行该ssh
程序。
答案2
您需要让第一个命令在后台运行,并在第一个命令启动后启动第二个命令。我相信还有更优雅的方法(某种程度上),但这应该可以解决问题。
python ~/Downloads/usbmuxd-1.0.8/python-client/tcprelay.py -t 22:2222 & ssh -l 根 -p 2222 127.0.0.1
末尾的 “&” 符号告诉 bash 在后台运行 python 命令。
如果您需要再次运行该脚本,您可能需要找到正在运行的 python 命令并将其终止,然后才能再次运行它。否则它会抱怨端口已被阻止。