回答
到http://expect.nist.gov/的鏈接已損壞。也許這個?:http://expect.sourceforge.net/ – Katapofatico 2016-10-04 16:08:12
sudo apt-get install expect – SDsolar 2017-01-23 20:39:18
這裏是你如何與expect
工具做一個例子:
sub copyover {
$scp=Expect->spawn("/usr/bin/scp ${srcpath}/$file $who:${destpath}
+/$file");
$scp->expect(30,"ssword: ") || die "Never got password prompt from
+ $dest:$!\n";
print $scp 'password' . "\n";
$scp->expect(30,"-re",'$\s') || die "Never got prompt from parent
+system:$!\n";
$scp->soft_close();
return;
}
作爲一個Linux noob,這是什麼運行? Bash不接受`sub` ... – 2013-06-20 19:57:15
這是在Perl中,對不起,我沒有寫。 (5年前:)) – Espo 2013-06-24 06:46:53
如果要從Windows連接到服務器,則可以使用Putty版本的scp(「pscp」)讓密碼與-pw
參數一起傳遞。
只是產生像SSH密鑰:
ssh-keygen -t rsa -C "[email protected]"
副本~/.ssh/id_rsa.pub
,最後的內容將其添加到遠程機器~/.ssh/authorized_keys
確保遠程機器擁有的權限0700 for ~./ssh folder
和0600 for ~/.ssh/authorized_keys
使用sshpass:
sshpass -p "password" scp -r [email protected]:/some/remote/path /some/local/path
左右沒有密碼在bash的歷史表明
sshpass -f "/path/to/passwordfile" scp -r [email protected]:/some/remote/path /some/local/path
路徑的上述副本內容從遠程主機到本地。
安裝:
- 的ubuntu/Debian的
apt install sshpass
- 的centos/fedora的
yum install sshpass
- MAC W/MacPorts的
port install sshpass
- MAC W/BREW
brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb
您可以使用 '預期' 腳本對UNIX /終端
例如創建 'test.exp來':
#!/usr/bin/expect
spawn scp /usr/bin/file.txt [email protected]<ServerLocation>:/home
set pass "Your_Password"
expect {
password: {send "$pass\r"; exp_continue}
}
運行腳本
expect test.exp
我希望幫助。
我發現這個真的很有用答案here。
rsync -r -v --progress -e ssh [email protected]:/address/to/remote/file /home/user/
不僅可以傳遞密碼,還可以在複製時顯示進度條。非常棒。
確保你之前,有 「預期」 的工具,如果沒有,這樣做
# apt-get install expect
創建具有下列內容的腳本文件。 (#VI /根/腳本文件)
spawn scp /path_from/file_name [email protected]_host_name:/path_to
expect "password:"
send put_password_here\n;
interact
與 「預期」 工具執行腳本文件
# expect /root/scriptfile
沒有人提及它,但Putty scp(pscp)有一個-pw選項用於密碼。
文檔可以在這裏找到:https://the.earth.li/~sgtatham/putty/0.67/htmldoc/Chapter5.html#pscp
您可以使用ssh-copy-id
添加SSH密鑰:
$which ssh-copy-id #check whether it exists
如果存在:
ssh-copy-id "[email protected]"
一旦設置了ssh-keygen
如上所述,你可以做
scp -i ~/.ssh/id_rsa /local/path/to/file [email protected]:/path/in/remote/server/
如果你想減少每次打字,你可以修改你.bash_profile
文件,並把
alias remote_scp='scp -i ~/.ssh/id_rsa /local/path/to/file [email protected]:/path/in/remote/server/
然後從你的終端做source ~/.bash_profile
。之後,如果在終端中鍵入remote_scp
,它應該運行scp
命令,而不使用密碼。
curl可以用來替代scp來複制文件,並且它在命令行上支持密碼。
curl --insecure --user username:password -T /path/to/sourcefile sftp://desthost/path/
步驟獲得sshpass爲RHEL/centos的6:
# wget http://epel.mirror.net.in/epel/6/i386/epel-release-6-8.noarch.rpm
# rpm -ivh epel-release-6-8.noarch.rpm
# yum install sshpass
- 1. 將加密密碼傳遞給msbuild
- 2. SCP短密碼
- 3. 如何將密碼傳遞給「su」命令?
- 4. 如何將密碼字段的值傳遞給另一個類
- 5. 如何將密碼作爲參數傳遞給shell腳本
- 6. Net :: SCP/Net :: SCP :: Expect - 如何處理密碼與密鑰認證
- 7. 如何將jQuery傳遞給eval'd代碼?
- 8. 如何將此代碼傳遞給codeigniter
- 9. 在scp命令中傳遞密碼作爲參數
- 10. 如何在將密鑰傳遞給JavaScript代碼時獲取密鑰?
- 11. 如何將值傳遞給
- 12. 將JSP加密參數傳遞給servlet
- 13. 如何將參數傳遞給傳遞給mapPartitions的函數?
- 14. 將用戶名/密碼傳遞給SmtpClient(.NET)的正確方法
- 15. 將用戶名和密碼傳遞給WSO2 ESB代理/端點
- 16. 將用戶名和密碼傳遞給Sharepoint
- 17. 將密碼傳遞給Unix腳本中的ssh提示符
- 18. Topshelf將用戶名和密碼傳遞給配置
- 19. 將參數傳遞給密碼查詢通過neo4j-shell
- 20. 將新的密碼值傳遞給Angular 4中的validator.ts
- 21. Ant:將用戶名和密碼傳遞給exec
- 22. 使用shell中的變量將密碼傳遞給mysql_config_editor
- 23. Laravel 5.3將數據傳遞給密碼重置模板失敗
- 24. 將用戶名和密碼傳遞給CryptRetrieveTimeStamp函數
- 25. 將用戶名和密碼傳遞給svcutil.exe?
- 26. 使用javascript/ajax將密碼值傳遞給php頁面
- 27. JQUERY AJAX - 如何將證書(用戶和密碼)傳遞給Sharepoint Web服務
- 28. 如何使用Free Pascal將sudo \ root密碼傳遞給Linux命令
- 29. 如何在不覆蓋TTY的情況下將密碼傳遞給su/sudo/ssh?
- 30. 如何將用戶名和密碼傳遞給silverlight中的httpWebRequest 4
參見(稍後)的問題:http://stackoverflow.com/questions/1462284/how在使用scp-in-shell腳本時對密碼提示進行響應,其中一個答案提到另一種可能的方式來執行此操作。 (注意:這不是一個重複的問題 - 它是另一個重複的原始文件。) – 2009-09-22 20:50:54