2017-04-18 211 views
0

下面是我需要使用函數運行的代碼 -
我需要包含scp和ssh命令在shell模塊中,有可能嗎? 列表文件包含我們需要複製文件的服務器的IP地址。 如何在我的手冊中包含以下代碼部分。建議如何在shell或命令模塊中使用scp和ssh命令,也無法從shell腳本運行scp命令。

for i in `cat /tmp/list` 
    do 
    echo $i 
    scp HLC_auth $i:.ssh/authorized_keys 
    scp known_hosts.LLC $i:.ssh/known_hosts 
    ssh $i "rm -rf .ssh/id_dsa*" 
    ssh $i "ssh-keygen -d" 
    done 

我能夠成功地執行了如下循環任務 -

shell: for i in `cat /home/dp794d/temp/list`; 
      do echo $i; 
      done 

這給了我的IP列表中,但是當我嘗試包括在相同scp命令,它做不起作用。

我想轉儲所有這些代碼的腳本,並嘗試運行腳本,但它仍然是給我一些錯誤 -

出於測試目的,我創建具有scp命令一個腳本 -

我的腳本文件(abc.sh)包含以下scp命令 -

/斌/慶典

SCP /home/capio/ansible/pmossWipm/day1/playbooks/xyz.txt [email protected]:/家/用戶

我陽明看起來像 -

--- 
- hosts: testserver 
    tasks: 

    - name: "run the script" 
    script: /home/capio/ansible/pmossWipm/day1/scripts/abc.sh 

但它仍然不能正常工作,它不給任何迴應。我們需要終止it.- Playbook error screenshot

+1

這不是您應該使用Ansible的方式,請將此shell腳本轉換爲帶有Ansible模塊的playbook。 –

回答

0

使用您的for循環作爲一個Ansible劇本的基礎上...

  1. 定義使用「的/ tmp /列表」文件的清單文件。
  2. 對於每個「SCP」線,使用Ansible「複製」模塊:http://docs.ansible.com/ansible/copy_module.html
  3. 對於「RM」行上,使用Ansible「文件」模塊指向id_dsa的文件和設置「狀態」,以「缺席」:http://docs.ansible.com/ansible/file_module.html
  4. 我不確定什麼是「ssh-keygen -d」,但它可能是一個純粹的Ansible模塊可以完成的事情。