同步檔案至多個機器指令碼(免輸密碼)

2022-05-06 15:51:13 字數 828 閱讀 6627

#!/bin/bash

spath=/tmp/index.js    #測試路徑/檔案

dpath=/tmp/index.js_bak  #目標路徑/檔案

distribute_rsync () ;

expect eof;"}

for addr_ip in `cat addr_ip`  ## addr_ip 為ip位址檔案

do

echo -e "\e[32mrsync for $addr_ip ........\e[0m"

distribute_rsync $spath $dpath $addr_ip

done

所遇問題以及問題解決:

1、在bash 編譯環境下,直接使用expect ,spawn報錯:命令無法找到

distribute.sh: line 8: spawn: command not found

嘗試解決1: 新增#!/usr/bin/expect

報錯:無法識別bash 環境下的變數定義以及函式定義

原因:expect 環境下,變數定義直接使用 : set 變數 值

函式定義: proc 函式名(引數1 引數2....){}

最終解決:使用expect -c " ... "  ,在bash 環境下直接進入expect環境,可以完成互動部分(輸入密碼)

注意:expect -c 可以完成多次互動,但是需要注意句尾分號已經轉義符以及

expect eof ;的使用。

執行結果截圖:

運維 ssh免密配置指令碼及同步檔案指令碼

在部署分布式程式時,如spark kafka zookeeper 海豚排程系統時,需要在一台伺服器上批量操作多台伺服器時,如將安裝包傳到其它伺服器 批量啟停軟體節點等。為了避免每次遠端到其他伺服器執行命令時都需要輸入密碼,就需要在該伺服器對目標伺服器配置免密碼登入,若只需要以其中一台來管理整個集群,...

shell xsync指令碼同步檔案

前言 因為最近在安裝zk集群,發現單純使用scp或rsync命令同步檔案非常麻煩,學習下編寫乙個名為xsync指令碼,並附上遇到的問題及解決方案,效率飛快。環境 三颱伺服器 分別叫ni103,ni104,ni105,後面有配置要用到主機名 bin sh 獲取輸入引數個數,如果沒有引數,直接退出 pc...

winscp 同步 Winscp指令碼同步檔案

winscp.exe console script sample.txt automatically answer all prompts negatively not to stall the script on errors option echo on off option echo off ...