2017-04-18 210 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模块可以完成的事情。