写个一键安装docker的脚本
#! /bin/sh
#
# rsipac_docker.sh
# Copyright (C) 2021 user <user@4029GP-TR>
#
# Distributed under terms of the MIT license.
#
curl -s -L https://nvidia.github.io/nvidia-container-runtime/gpgkey | \
apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-container-runtime/$distribution/nvidia-container-runtime.list | \
tee /etc/apt/sources.list.d/nvidia-container-runtime.list
apt-get update && apt-get -y install nvidia-container-runtime
cd && wget https://hjr-share.obs.cn-north-4.myhuaweicloud.com/get-docker.sh && sh get-docker.sh --mirror Aliyun && rm get-docker.sh
利用expect去自动执行安装docker的脚本
set host [lindex $argv 0]
# set username [lindex $argv 1]
set password [lindex $argv 2]
# spawn ssh root@$host "nohup sh -c \"\$(curl -fsSL https://hjr-tmp.obs.cn-north-4.myhuaweicloud.com/rsipac_docker.sh)\" > run.log"
spawn ssh root@$host "wget https://hjr-tmp.obs.cn-north-4.myhuaweicloud.com/rsipac_docker.sh && nohup bash rsipac_docker.sh > run.log"
expect "*Are you sure you want to continue connecting (yes/no)?*" {send "yes\r"}
expect "*password*" {send "$password\r"}
interact
spawn scp root@$host:/root/run.log "$host.log"
expect "*password*" {send "$password\r"}
interact
利用python的多线程去安装
import os
f = open('ip60.txt')
lines = f.readlines()
f.close()
# for line in lines[2:4]:
# url = line.strip()
# print('############################## {} #############################'.format(url))
# print('############################## url #############################')
# print('############################## url #############################')
# print('############################## url #############################')
# os.system("./rsipac.sh {}".format(url))
def multiprocess_run(process, obj_list):
# python -c "import multiprocessing; print(multiprocessing.cpu_count())"
import sys
from tqdm import tqdm
from multiprocessing import Pool
import multiprocessing
import time
cpus = multiprocessing.cpu_count()
pool = Pool(processes=30)
result_list = []
tic = time.time()
for result in tqdm(pool.imap(process, obj_list)):
result_list.append(result)
sys.stdout.flush()
toc = time.time()
print('time waste', toc - tic)
return result_list
def process(line):
url = line.strip()
print('############################## {} #############################'.format(line))
# print('############################## url #############################')
# print('############################## url #############################')
# print('############################## url #############################')
# os.system("./rsipac.sh {}".format(url))
os.system("nohup ./rsipac.sh {} > {}.fuck.log".format(url, url))
# os.system("nohup ./change_data.sh {} > {}.fuck.log".format(url, url))
multiprocess_run(process, lines[30:60])