shell腳本scp
A. shell腳本scp可以在windows和linux之間傳東西嗎
windows裝了ssh server才可以
B. shell腳本 我想scp 一個文件過去並把它解壓 如何下 執行後卻沒有顯示什麼 有沒有報錯
小括弧沒有成對,只有一半。
done出現了兩次。
<<EOF
命令
EOF
這兩個EOF必須成對出現,中間是要遠程執行的命令,如果unzip是在遠端機器上執行,就要寫到中間去。第二個EOF必須頂格寫,前後不能有空格。
試試這樣:
#!/bin/sh
filepath=scp.txt
whilereadline
do
echo$ine
scpjdk.zipampmon@${line}:/smp/lll/
sshampmon@$line<<EOF
cd/smp/lll
unzipjdk.zip
EOF
done<$filepath
C. shell腳本中如何實現scp自動輸入密碼
配置ssh認證銷源就可以不輸入密碼了,可以使用這個鏈接的zcmd工具,虧歲態雀攜https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/ztools
D. shell腳本中解決SCP命令需要輸入密碼的問題
答案:使用密鑰文件。
這里假設主機A(192.168.1.3)用來獲到主機B(192.168.1.4)的文件。
在主機A上執行如下命令來生成配對密鑰:
ssh-keygen -t rsa
遇到提示回車默認即可,公鑰被存到用戶目錄下.ssh目錄,比如root存放在:
/root/.ssh/id_rsa.pub
將 .ssh 目錄中的 id_rsa.pub 文件復制到 主機B 的 ~/.ssh/ 目錄中,並改名為 authorized_keys,
到主機A中執行命令和主機B建立信任,
例(假設主機B的IP為:192.168.100.4):scp ~/.ssh/id_rsa.pub 192.168.100.4:/root/.ssh/authorized_keys
下面就可以用scp、ssh命令不需要密碼來獲取主機B的文件了
ssh 192.168.100.4 回車就不需要密碼了。
註:其實id_rsa.pub內容添加到對方機器的authorized_keys中就行了
拷貝其他伺服器附件歸集到主伺服器bash shell
[ [email protected] ~]$ cat .bash
scp -r [email protected] :/home/test1/tomcat/webapps/app01/WEB-INF/attachment/* /home/test/tomcat/webapps/app01/WEB-INF/attachment/
echo "done! app02. finish"
scp -r [email protected] :/home/test2/tomcat/webapps/app01/WEB-INF/attachment/* /home/test/tomcat/webapps/app01/WEB-INF/attachment/
echo "done! app03. finish"
增加定時任務
crontab -e
類似編輯vi 在裡面粘貼
---shift+zz保存,重啟crond服務
root]# service crond restart
引用自 https://www.cnblogs.com/java2sap/p/11424587.html
E. 如何在shell腳本中實現 scp 文件的時候不手動輸入密碼
在shell腳本中實現 scp 文件的時候不手動輸入密碼的腳本如下:
#!/usr/bin/expect -f
set password 密碼
spawn scp 用戶名@目標機器ip:拷貝文件的路徑 存放本地文件的路徑
set timeout 300
expect "用戶名@目標機器ip's password:" #(注意:這里的「用戶名@目標機器ip」 跟上面的一致)
set timeout 300
send "$password "
set timeout 300
send "exit "
expect eof
附:scp參數
-r:拷貝目錄
-c:允許壓縮
一個完整的例子
#!/usr/bin/expect -f
set password 123456
#download
spawn scp [email protected]:/root/a.wmv /home/yangyz/
set timeout 300
expect "[email protected]'s password:"
set timeout 300
send "$password "
set timeout 300
send "exit "
expect eof
#upload
spawn scp /home/yangyz/abc.sql [email protected]:/root/test.sql
set timeout 300
expect "[email protected]'s password:"
set timeout 300
send "$password "
set timeout 300
send "exit "
expect eof
F. jenkins執行shell腳本,使用scp免密傳輸失敗問題
問題:Jenkins默認使用jenkins用戶去啟動,jenkins用戶並沒有許可權去執行ssh免沒巧襪密登陸,所以導致執行失敗
註:配置linux雙機互信後,jenkins也需要將公鑰加入到目標機器,才能達到shell腳本中scp免密傳輸的條件
一、驗證登錄
1、切換jenkins用戶
# su jenkins
切換後還是root賬號
2、分析解決:
2.1 應該枯激是/etc/passwd文件中的/bin/bash被yum安裝的時候變成了/bin/false
# vim /etc/passwd
jenkins:x:990:988:Jenkins Automation Server:/var/lib/jenkins:/bin/false( bash)
將bin/false改為/bin/bash
再次執行切換
# su jenkins
bash-4.1$
2.2 結果命令提示符的用戶名不是jenkins而變成了 bash-4.1$,原因是在安裝jenkins時,jenkins只是創建了jenkins用戶,並沒有為其創建home目錄
# vim ~/.bash_profile
在文件的最後添加 export PS1='[\u@\h \W]\$',執行文件使修改項起作用
# source ~/.bash_profile
驗證是否成功 # su jenkins
二、為jenkins系統用戶開啟免密登錄
1、在Jenkins的使用過程中,如果在腳本中使用到sudo命令,有可能出現如下所示的錯誤:
sudo: no tty present and no askpass program specified
這是因為Jenkins伺服器在執行sudo命令時的上下文有誤,導致這個命令執行的異常。
2.1 解決方法:
# sudo visudo
在文件末尾加上jenkins ALL=(ALL) NOPASSWD: ALL
2.2 重啟jenkins,測試
# su jenkins
# sudo su -s /bin/bash jenkins
測試成功,jenkins免密登錄成功。
PS:如果誤操作修改了/etc/sudoers的許可權來修改上述文件,則會導致如下所示的錯誤:
sudo :/etc/sudoers is world writable
sudo : no valid sudoers source found, quitting
sudo : unable to initialize poling plugin
這是Linux的一種保護機制。因此,如果出現上述誤操作,則需要執行如下命令來解決:
$ pkexec chmod 0440 /etc/sudoers
三、jenkins用戶開通ssh免密登錄
1、安裝ssh
# yum install ssh
1.1 將ssh服務設置開機自啟寬猛
# sudo systemctl enable sshd
1.2 啟動ssh
# sudo systemctl start sshd
2、生成jenkins用戶秘鑰證書
# su jenkins
# ssh-keygen -t rsa
2.1 查看是否生成成功
# /var/lib/jenkins/.ssh/
# ls
3、將公鑰傳輸到目標linux系統
ssh--id -i /var/lib/jenkins/.ssh/id_rsa.pub root@目標ip:path
------------------------------------------------------------------------------------------
參考:https://blog.csdn.net/weixin_43840640/article/details/90371472
G. linux ftp拷貝window上的文件
自己可以根據ftp的操作過程,寫一個shell腳本。簡單的選擇文件下載(如你的例子)可以用mget
20120512072*
.*
這樣的方式來進行。復雜的下載策略寫腳本比較麻煩,建議裝rsync等專用開源軟體來實現,某個版本的winscp也能實現比較簡單的自動過濾下載功能。
H. xshell怎麼移動文件到另一個目錄
xshell怎麼移動文件到另一個目錄
1、從一個伺服器復制到另外一個伺服器
第一步:進入存有目標文件的伺服器文件目錄:
/app/weblogic/wls12130/user_projects/upload/
第二步:執行下面命令進行復制
scp -r test.war(文件名.文件後綴 ) root(目標伺服器賬號)@21.1.1.xxx(目標伺服器地址):/app/weblogic/wls12130/user_projects/upload/(目標路徑)
2、文件下載到本地 sz命令 – 基於ZModem協議下載文件到本地
下載指定的某個文件:
[root@linuxcool ~]# sz an.cfg
…………彈出窗口中選擇本地保存路徑即可…………
以文本方式批量下載指定的多個文件:
[root@linuxcool ~]# sz -a /etc/*
…………彈出窗口中選擇本地保存路徑即可…………
以二進制方式下載指定的某個文件:
[root@linuxcool ~]# sz -b File.tar.gz
…………彈出窗口中選擇本地保存路徑即可…………
3、上傳文件 rz命令 – 基於ZModem協議上傳文件到伺服器
上傳指定的文件到伺服器:
[root@linuxcool ~]# rz
…………彈出窗口中選擇要上傳的文件即可…………
上傳指定的文件到伺服器,遇到重名的文件直接覆蓋:
[root@linuxcool ~]# rz -y
…………彈出窗口中選擇要上傳的文件即可…………
上傳指定的文件到伺服器,遇到重名的文件不要覆蓋:
[root@linuxcool ~]# rz -p
…………彈出窗口中選擇要上傳的文件即可…………
I. Linux 命令 & shell 腳本之01(cp & scp命令)
Linux cp命令主要用於復制文件或目錄
1.語法
2.參數說明
3.案例
3.1. cp 命令基本用法
3.2 復制目錄
3.3 復制軟鏈接文件
3.4. 保留源文件屬性復制
3.5. "-l" 和 "-s" 選項
4.cat
6.linux快速刪除大量文件
J. 2台linux機器通過scp拷貝文件,如何用shell腳本對比是否拷貝完整
遠程機器上保存一個md5文件記錄要拷貝文件列表的md5值,格式如下:
文件名1md5sum1
文件名2md5sum2
文件名3md5sum3
scp同時獲取該md5文件到本地。
在本地用md5sum重新計算各文件的md5值,與md5文件中的對比,以此校驗。