Bash脚本:读取包含IP的文件并运行脚本

时间:2020-06-23 12:10:12

标签: linux bash ssh

我已经在手动运行的bash中创建了一个useradd脚本(可以在远程主机上复制脚本并运行该脚本)。

我希望该脚本读取host.txt文件,在此不提要通过登录到远程主机来运行IP的

exception:
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/pip-8.1.2-py2.7.egg/pip/basecommand.py", line 215, in main
    status = self.run(options, args)
  File "/usr/lib/python2.7/site-packages/pip-8.1.2-py2.7.egg/pip/commands/install.py", line 299, in run
    requirement_set.prepare_files(finder)
  File "/usr/lib/python2.7/site-packages/pip-8.1.2-py2.7.egg/pip/req/req_set.py", line 370, in prepare_files
    ignore_dependencies=self.ignore_dependencies))
  File "/usr/lib/python2.7/site-packages/pip-8.1.2-py2.7.egg/pip/req/req_set.py", line 587, in _prepare_file
    session=self.session, hashes=hashes)
  File "/usr/lib/python2.7/site-packages/pip-8.1.2-py2.7.egg/pip/download.py", line 798, in unpack_url
    unpack_file_url(link, location, download_dir, hashes=hashes)
  File "/usr/lib/python2.7/site-packages/pip-8.1.2-py2.7.egg/pip/download.py", line 705, in unpack_file_url
    unpack_file(from_path, location, content_type, link)
  File "/usr/lib/python2.7/site-packages/pip-8.1.2-py2.7.egg/pip/utils/__init__.py", line 599, in unpack_file
    flatten=not filename.endswith('.whl')
  File "/usr/lib/python2.7/site-packages/pip-8.1.2-py2.7.egg/pip/utils/__init__.py", line 482, in unzip_file
    zipfp = open(filename, 'rb')
IOError: [Errno 2] No such file or directory: '/pkgs/argparse-1.4.0-py2.py3-none-any.whl'

1 个答案:

答案 0 :(得分:0)

假设您有一个名为ip.txt的IP文件

while IFS= read -r dest; do
  scp useradd.sh "root@$dest:remote/path/"
  ssh root@$dest "/bin/bash remote/path/useradd.sh"
done <ip.txt

如果root用户无法登录(推荐),则用正确的用户替换,然后在命令中添加sudo。

这假设登录是通过密钥文件完成的,并且没有密码。

如果文件已经在主机上,则跳过scp阶段-或者您可以使用xargs之类的

cat ip.txt | xargs -I{} ssh user@{} sudo remote/path/useradd.sh

或者-我建议您使用ansible。