我在Python(Ubuntu)上制作程序时遇到了困难:“在不提示密码的情况下从直接连接的Linux机器获取文件”
目前,我正在Python中使用此命令,但希望提前输入密码,这样它就不会提示我输入密码。
import os
os.system("echo 'hello world'")
os.system("rsync -rav pi@192.168.2.34:python ~/")
其他Linux机器的IP地址为:192.168.2.34 密码为:raspberry 主机名:pi
您可以通过交换私钥来实现这一点。这样,您就可以在不提示密码的情况下从直接连接的Linux机器获取文件。以下是交换私钥的步骤:
ssh-keygen
on your Ubuntu terminal.Keep on pressing enter until something like this shows up:
The key's randomart image is:
+--[ RSA 2048]----+
| . .*|
| . + +o|
| + * + .|
| o E * * |
| S + + o +|
| o o o |
| . . . |
| |
| |
+-----------------+
After that execute ssh-copy-id pi@192.168.2.34
and enter password i.e., raspberry
, if that is the password for the other machine.
import os
os.system("echo 'hello world'")
os.system("rsync -rav pi@192.168.2.34:python ~/")
cmd = "rsync -rav pi@192.168.2.34:python ~/"
from pexpect import *
run(cmd,events={'(?i)password':'your_password\r'})
from subprocess import PIPE,Popen
cmd = "rsync -rav pi@192.168.2.34:python ~/"
proc = Popen(cmd.split(),stdin=PIPE)
proc.stdin.write('your_pass\r')
proc.stdin.flush()
pip install pexpect
进行安装。pi
的主目录中放置一个名为.shosts
的文件,其中包含一行。name_or_ip_address_of_source_machine user_name_on_source_machine
rsync -rav rsync://pi@192.168.2.34/python ~/
的命令。这可能在您特定的情况下是可行的,也可能不是。 - deStrangis