当前位置:首页 » 网页前端 » shell批量互信脚本
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

shell批量互信脚本

发布时间: 2022-04-29 03:17:33

❶ 如何在shell脚本里使用sftp批量传送文件

如何在shell脚本里使用sftp批量传送文件

主要步骤如下:

1.为运行shell脚本的本地用户生成密钥对
2.将其中的公钥分发到sftp欲登录的远程服务器上
3.编写并以上面的本地用户运行shell脚本

一.生成密钥对

在shell脚本中使用sftp时必须用到密钥对(公钥和私钥).可使用下列方式生成(SSH 2.X版
本),这里本地用户记为:local_user:

$ ssh-keygen –d

屏幕提示:

Generating public/private dsa key pair.

Enter file in which to save the key (/home/local_user/.ssh/id_dsa):
# 按回车保存为: /home/local_user/.ssh/id_dsa,即当前用户local_user的私钥

Enter passphrase (empty for no passphrase):
# 按回车,表示读取密钥时不需要密钥的密码

Enter same passphrase again:
# 确认密钥的密码,必须和上面的输入相同

Your identification has been saved in /home/local_user/.ssh/id_dsa.
# 私钥保存信息

Your public key has been saved in /home/local_user/.ssh/id_dsa.pub.
# 公钥保存信息

The key fingerprint is:
ec:41:e8:08:38:0b:f8:1e:bc:92:98:32:fc:d7:69:7d ...
# 密钥指纹

二.分发公钥

为了使用密钥,必须将公钥分发到欲登录的远程服务器上,这里远程服务器记为remote_hos
t,欲登录的远程用户记为remote_user

1.公钥到欲登录的远程服务器的远程用户的家目录下,例如:

id_dsa.pub到remote_host:/home/remote_user/.ssh/

若目录/home/remote_user/.ssh/不存在,请先创建之.

2.将来的公钥文件改名为authorized_keys

3.修改公钥文件的访问权限

chmod 644 authorized_keys

三.示例

目标:

从远程服务器remote_host:/home/remote_user/data/
传送下列文件到本地计算机的当前目录: /home/local_user/data/:

20050201
20050202
20050203
20050204
20050205

方式1: 批模式

sftp提供了一个选项-b,用于集中存放sftp命令(该选项主要用于非交互模式的sftp).因此
对于上面的目标,可以生成如下的命令文件:

cd /home/remote_user/data/
lcd /home/local_user/data/
-get 20050201 .
-get 20050202 .
-get 20050203 .
-get 20050204 .
-get 20050205 .
quit

这里存为: sftp_cmds.txt

说明: get命令前加一个"-"以防止其执行错误时sftp执行过程被终止.

以下为脚本示例:

#!/bin/sh
sftp -b ./sftp_cmds.txt remote_user@remote_host

方式二:

#!/bin/sh
sftp remote_user@remote_host << EOF
cd /home/remote_user/data/
lcd /home/local_user/data/
-get 20050201 .
-get 20050202 .
-get 20050203 .
-get 20050204 .
-get 20050205 .
quit
EOF

❷ shell中怎么批量执行命令。

将要执行的命令全部写入一个文件(俗称脚本文件),然后执行脚本文件即可。
注意:假设脚本文件名为test.sh(后缀不必要,只是为了清楚表明是脚本文件),那么在执行脚本文件前,要用 chmod +x test.sh 赋予其可执行权限。然后才能像执行命令那样执行脚本。
--------------------
多台服务器跟一台服务器的操作类似,通信协议和操作方式都是相同的,只是IP地址不同。
所以只要写一个循环,
for ip in $ip1 $ip2 $ip3
do
使用 $ip 做服务器操作
done

❸ shell脚本 如何批量执行多个脚本 不等结果返回

php是要web服务器才能运行吧

❹ 如何使windows下的bat文件调用linux下的shell脚本的方法

参考网站:http://www.07net01.com/linux/_412980_1371458611.html

第一步:规划
在连通bat和shell之前要先把windows和windows之间的关系,linux和linux之间的关系打通。
windows之间用net use 进行连接,linux之间使用ssh进行连接

第二步:打地基
PS:以下所有运行环境都是在超级管理员下运行,省的跳出一些乱七八糟的东西阻碍造桥大计。
windows间可用net use进行测试,查看是否能相连的。

例:net use \\192.168.1.124\ipc$ "123456" /user:"administrator"
net use \\ip地址\ipc$ "密码"/user:"用户名"

这个密码和用户名都是要连接过去那台机子的密码和用户名的
若出现以下提示就证明连接成功

当然万事都是没有这么顺利的。。。
例如。。。

像这么些乱七八糟的错误基本就是网络不通啊,ip地址有误,用户名密码有误之类造成的。。。
所以得多多利用度娘、谷姐之类的神器进行解决。
或许有时候可能还会用到以下一些命令

net use 来查看哪些是存在的
net use \\192.168.1.210\ipc$ /del 用来删除连接

windows的连接方式就是如此。
在你的客户机上用同样的方法去测试需要加入批量关机大军的windows服务器。

linux间通信使用ssh方式来进行。
先进行配置linux间ssh双机互信机制,这样就可以使两机之间通信不需要输入密码进行访问,将密码全部隐藏起来,这样也起到了安全作用。
关于ssh双机信任机制可以我之前的博客上查看
http://alwaysyunwei.blog.51cto.com/3224143/1222601

第三部:架桥
现在linux机器上写一个shell脚本进行批量关机
其中ip.txt存放要批量关机的linux机器ip
当然shutdown_boot.sh应该像下面这样写,而不是图片中的那样,图片中的内容只是我做测试用的。
#!/bin/sh
for ip in `cat ip.txt`
do
ssh $ip <<EOF
echo "{$ip} shutdown now..."
ifconfig
init 0
EOF
done

ssh 192.168.1.216 -p10088<<EOF
echo "shutdown 192.168.1.216 now...."
ifconfig
init 0
EOF

因为在我的正式环境中216这台机子SSH端口比较特殊,所以单独剥离出来。

桥的一端已搭好,现在搭建另一端,windows下bat脚本来进行windows批量关机
建立一个shutdown.bat文件
写入以下内容

#批量关闭windows机器

net use \\192.168.1.249\ipc$ "12345" /user:"administrator"
shutdown -s -f -t 20 -m \\192.168.1.249

net use \\192.168.1.254\ipc$ "123456" /user:"administrator"
shutdown -s -f -t 20 -m \\192.168.1.254

net use \\192.168.1.210\ipc$ "123456" /user:"administrator"
shutdown -s -f -t 20 -m \\192.168.1.210

桥的另一端也搭好了

最后一步就是把两端连起来
这时候就要请出我们的putty工具
可谷姐、度娘下载一个

第一次要进行手动连接

用这个工具进行连接shell脚本所在的那台机子

填上IP和端口即可。
然后进行连接,会提示输入用户名和密码,登入完后就出现sshhostkeys文件夹

然后把shutdown.bat文件放入到跟这文件夹同级目录下。
在bat文件添加以下内容

#批量关闭linux机器

D:
cd puttyfile_0.62cn
putty.exe -ssh -pw 123456-m test.sh [email protected]

简单说下这个语法
putty.ext -ssh -pw 密码 -m 要在linux执行的文件 用户名@IP地址

其中test.sh也是放在sshhostkeys同级目录下,里面写上你要向linux执行的命令

#!/bin/sh

cd /opt/script/shell
#mkdir /tmp/test061502
sh shutdown_boot.sh
#mkdir test06170

最终的结果就是以下内容了

shutdown.bat

test.sh

这样就大功告成

第四步:后期工作
按照这个流程可以完成最初的要求,但这样会存在很多的安全问题,密码明码就是一个问题,这个还有待研究看要怎样处理。
另外一个,在这个bat文件中最好加一个时间判断,比如晚上6点后点击执行这个bat文件可以正常运行,其他时间段点击时则出现告警,以防误操作导致关机。

还有其他的等等一些内容需要完善,待以后想到了在 进行补充。

❺ 求助,shell 脚本批量数据的处理

没太听懂你的意思,如果用bash来写,可以通过数组来控制,比如
数组TraceNum[1] 和对应的PackNuo[1] 数组里边的下标可以用变量来控制。
不知道是不是你想要的效果,具体还是没听懂你想干嘛。

❻ centos shell脚本(批量操作)

#!/bin/bash

HOSTNAME="192.168.111.84" #数据库信息
PORT="3306"
USERNAME="root"
PASSWORD=""

DBNAME="test_db_test" #数据库名称
TABLENAME="test_table_test" #数据库中表的名称

❼ linux shell脚本 批处理

  1. 新建一个文件,名字为test(自己定义的名字)
    nano test.sh

  2. 在里面编写脚本
    程序必须以下面的行开始(必须方在文件的第一行):
    #!/bin/sh
    符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例子中使用/bin/sh来执行程序。
    (能写一些shell普通命令,命令用分号隔开)
    例子:
    #! /bin/bash
    # shutdown pc
    sudo
    shutdown +1

  3. 执行方法
    (1)在控制台输入命令执行:
    sh
    test.sh
    (2)先给脚本可执行权限,双击执行:
    右键此文件,选择属性->权限,最下方会有一个“允许以程序执行文件”,将这一项勾选,就可以了。
    或在命令行下附予权限:
    chmod 777
    test.sh 或: chmod +x test.sh

❽ shell脚本如何批量运行代码

可以哈。需要后台运行并且记录下进程号。代码我没有尝试。逻辑是这样。


sh_PID=""
py_PID=""
INFO_FILE="~/.myshell_info"
log_file1="~/.log_file1"
log_file2="~/.log_file2"
if[-e"$INFO_FILE"];then
(readsh_PID;readpy_PID)<"$INFO_FILE"
kill-9$sh_PID
kill-9$py_PID
rm"$INFO_FILE"
else
rm"$INFO_FILE"
nohupxxx.sh2>&11>>"$log_file1"&
echo$!>>"$INFO_FILE"
nohuppythonxxx.py2>&11>>"$log_file2"&
echo$!>>"$INFO_FILE"
fi

❾ 如何对shell脚本进行批量注释

采用下面这种形式:

:<<COMMENTBLOCK
代码行1
代码行2
代码行3
COMMENTBLOCK

注意:第二个COMMENTBLOCK需要顶格写,前面不能有空格。

当然,这两个COMMENTBLOCK也可以替换成任意在被注释代码行中未出现过的字符串。、


其实是利用了Here Documents,将代码段作为空命令 : 的输入。

关于Here Documents,参见:http://linux.die.net/abs-guide/here-docs.html

❿ 怎么用shell脚本批量给多台服务器传输文件

scp-i~/.ssh/id_rsa-p8888/tmp/[email protected]:/tmp

能看懂吗?

-i 后边跟着你的key

别的不用解释了吧?

如果是默认端口不用加-p参数