auto send password by scp

本文介绍了一种利用Expect脚本实现SSH免密码文件传输的方法。通过自动化输入密码的过程,可以轻松地将文件从本地传输到远程服务器上的指定目录。这种方法适用于需要频繁进行文件传输的场景。
#!/opt/ubs/bin/expect
spawn scp -r user @server:/tmp/webEar/* /app/webEar
expect "password:"
send "123456\r"
interact
set -x read -p "输入3个ip:" IPS tar xf gpmall-cluster.tar.gz mv /etc/yum.repos.d/* /tmp cat << EOF > /etc/yum.repos.d/local.repo [a] baseurl=file:///root/gpmall-cluster/gpmall-repo gpgcheck=0 EOF # 写入hosts文件 IFS=' ' read -ra IP_ARRAY <<< "$IPS" cat << EOF > /etc/hosts ${IP_ARRAY[0]} mycat ${IP_ARRAY[1]} db1 ${IP_ARRAY[2]} db2 EOF # 判断命令是否存在 if ! command -v expect &> /dev/null; then yum install -y expect fi filepath=~/.ssh/id_rsa.pub user=root password=000000 auto_ssh_copy_id() { expect -c "set timeout -1; spawn ssh-copy-id -i $4 $2@$1; expect { *(yes/no)* {send -- yes\r;exp_continue;} *password:* {send -- $3\r;exp_continue;} eof { exit 0;} }"; } # 判断本地的公钥是否存在,如果不存在则需要生成公钥 [ ! -f $filepath ] && { ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa } hosts=`cat /etc/hosts | grep -v "^#"` # 对配置文件中的每一台主机进行免密登录操作 for serverIp in $hosts do # echo $serverIp--$user--$password # 将公钥发送给需要免密登录的主机 auto_ssh_copy_id $serverIp $user $password $filepath done #复制yum文件hosts文件 ssh db1 "mv /etc/yum.repos.d/* /tmp" ssh db2 "mv /etc/yum.repos.d/* /tmp" scp /etc/yum.repos.d/local.repo db1:/etc/yum.repos.d/ scp /etc/yum.repos.d/local.repo db2:/etc/yum.repos.d/ scp /etc/hosts db1:/etc/hosts scp /etc/hosts db2:/etc/hosts setenforce 0 ssh db1 "setenforce 0" ssh db2 "setenforce 0" scp -r /root/gpmall-cluster db1:/root scp -r /root/gpmall-cluster db2:/root #完成数据库安装 ssh db1 "yum install -y mariadb mariadb-server && systemctl start mariadb && systemctl enable mariadb && mysqladmin password 123456 " ssh db2 "yum install -y mariadb mariadb-server && systemctl start mariadb && systemctl enable mariadb && mysqladmin password 123456 " #更改数据库配置 ssh db1 'echo -e "[mysqld]\nlog_bin=mysql-bin\nserver_id=1" >> /etc/my.cnf && systemctl restart mariadb' ssh db2 'echo -e "[mysqld]\nlog_bin=mysql-bin\nserver_id=2" >> /etc/my.cnf && systemctl restart mariadb' #完成主从数据库 ssh db1 'mysql -uroot -p123456 -e "grant all privileges on *.* to root@'\''%'\'' identified by '\''123456'\''; grant replication slave on *.* to '\''user'\''@'\''db2'\'' identified by '\''123456'\'';"' ssh db2 'mysql -uroot -p123456 -e "grant all privileges on *.* to root@'\''%'\'' identified by '\''123456'\'';change master to master_host='\''db1'\'',master_user='\''user'\'',master_password='\''123456'\'',master_log_file='\''mysql-bin.000001'\'';start slave;"' #mycat 部署 yum install -y java java-devel tar -zxvf /root/gpmall-cluster/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local/ chmod -R 777 /usr/local/mycat/ echo export MYCAT_HOME=/usr/local/mycat/ >> /etc/profile source /etc/profile cat > /usr/local/mycat/conf/schema.xml << EOF <?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"> <schema name="gpmall" checkSQLschema="true" sqlMaxLimit="100" dataNode="dn1"></schema> <dataNode name="dn1" dataHost="localhost1" database="gpmall" /> <dataHost name="localhost1" maxCon="1000" minCon="10" balance="3" dbType="mysql" dbDriver="native" writeType="0" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <writeHost host="hostM1" url="${IP_ARRAY[1]}:3306" user="root" password="123456"> <readHost host="hostS1" url="${IP_ARRAY[2]}:3306" user="root" password="123456" /> </writeHost> </dataHost> </mycat:schema> EOF sed -i '82s/TESTDB/gpmall/' /usr/local/mycat/conf/server.xml sed -i '95,99d' /usr/local/mycat/conf/server.xml #导入数据库文件mysql scp /root/gpmall-cluster/gpmall.sql db1:/root ssh db1 'mysql -uroot -p123456 -e "create database gpmall; use gpmall ;source /root/gpmall.sql;"' /bin/bash /usr/local/mycat/bin/mycat start #Zookeeper集群部署 yum install -y java java-devel ssh db1 "yum install -y java java-devel" ssh db2 "yum install -y java java-devel" tar -zxvf /root/gpmall-cluster/zookeeper-3.4.14.tar.gz \cp -f /root/zookeeper-3.4.14/conf/zoo_sample.cfg /root/zookeeper-3.4.14/conf/zoo.cfg cat << EOF >> /root/zookeeper-3.4.14/conf/zoo.cfg server.1=${IP_ARRAY[0]}:2888:3888 server.2=${IP_ARRAY[1]}:2888:3888 server.3=${IP_ARRAY[2]}:2888:3888 EOF scp -r /root/zookeeper-3.4.14 db1:/root/ scp -r /root/zookeeper-3.4.14 db2:/root/ mkdir -p /tmp/zookeeper && echo "1" > /tmp/zookeeper/myid ssh db1 'mkdir -p /tmp/zookeeper > /dev/null && echo "2" > /tmp/zookeeper/myid' ssh db2 'mkdir -p /tmp/zookeeper > /dev/null && echo "3" > /tmp/zookeeper/myid' /root/zookeeper-3.4.14/bin/zkServer.sh start ssh db1 '/root/zookeeper-3.4.14/bin/zkServer.sh start ' ssh db2 '/root/zookeeper-3.4.14/bin/zkServer.sh start ' #Kafka集群部署 tar -zxvf /root/gpmall-cluster/kafka_2.11-1.1.1.tgz sed -i "s/broker.id=0/broker.id=1/g" /root/kafka_2.11-1.1.1/config/server.properties sed -i "s/#listeners=PLAINTEXT:\/\/:9092/listeners=PLAINTEXT:\/\/${IP_ARRAY[0]}:9092/g" /root/kafka_2.11-1.1.1/config/server.properties sed -i "s/zookeeper.connect=localhost:2181/zookeeper.connect=${IP_ARRAY[0]}:2181,${IP_ARRAY[1]}:2181,${IP_ARRAY[2]}:2181/g" /root/kafka_2.11-1.1.1/config/server.properties scp -r /root/kafka_2.11-1.1.1 db1:/root/ scp -r /root/kafka_2.11-1.1.1 db2:/root/ ssh db1 'sed -i "s/broker.id=0/broker.id=2/g;31d" /root/kafka_2.11-1.1.1/config/server.properties' ssh db1 "sed -i \"31i listeners=PLAINTEXT:\/\/${IP_ARRAY[1]}:9092\" /root/kafka_2.11-1.1.1/config/server.properties" ssh db2 'sed -i "s/broker.id=0/broker.id=3/g;31d" /root/kafka_2.11-1.1.1/config/server.properties' ssh db2 "sed -i \"31i listeners=PLAINTEXT:\/\/${IP_ARRAY[2]}:9092\" /root/kafka_2.11-1.1.1/config/server.properties" /root/kafka_2.11-1.1.1/bin/kafka-server-start.sh -daemon /root/kafka_2.11-1.1.1/config/server.properties ssh db1 "/root/kafka_2.11-1.1.1/bin/kafka-server-start.sh -daemon /root/kafka_2.11-1.1.1/config/server.properties" ssh db2 "/root/kafka_2.11-1.1.1/bin/kafka-server-start.sh -daemon /root/kafka_2.11-1.1.1/config/server.properties" #安装启动redis yum install redis -y sed -i "s/bind 127.0.0.1/bind 0.0.0.0/g;s/protected-mode yes/protected-mode no/g" /etc/redis.conf systemctl start redis #部署集群应用系统 cat << EOF >> /etc/hosts ${IP_ARRAY[0]} zookeeper1 ${IP_ARRAY[1]} zookeeper2 ${IP_ARRAY[2]} zookeeper3 ${IP_ARRAY[0]} mysql.mall ${IP_ARRAY[0]} redis.mall ${IP_ARRAY[0]} kafka1.mall ${IP_ARRAY[1]} kafka2.mall ${IP_ARRAY[2]} kafka3.mall ${IP_ARRAY[0]} zk1.mall ${IP_ARRAY[1]} zk2.mall ${IP_ARRAY[2]} zk3.mall EOF scp /etc/hosts db1:/etc/hosts scp /etc/hosts db2:/etc/hosts #启动java包 cat << EOF >> /root/start.sh nohup java -jar /root/gpmall-cluster/shopping-provider-0.0.1-SNAPSHOT.jar >> /root/shopping-provider.log 2>&1 & sleep 5 nohup java -jar /root/gpmall-cluster/user-provider-0.0.1-SNAPSHOT.jar >> /root/user-provider.log 2>&1 & sleep 5 nohup java -jar /root/gpmall-cluster/gpmall-shopping-0.0.1-SNAPSHOT.jar >> /root/gpmall-shopping.log 2>&1 & sleep 5 nohup java -jar /root/gpmall-cluster/gpmall-user-0.0.1-SNAPSHOT.jar >> /root/gpmall-user.log 2>&1 & sleep 5 EOF scp start.sh db1:/root scp start.sh db2:/root ssh db1 "bash start.sh" ssh db2 "bash start.sh" #部署nginx yum install nginx -y rm -rf /usr/share/nginx/html/* cp -rvf /root/gpmall-cluster/dist/* /usr/share/nginx/html/ sed -i "1i upstream myuser { \n server ${IP_ARRAY[1]}:8082; \n server ${IP_ARRAY[2]}:8082; \n ip_hash; \n} \n upstream myshopping { \n server ${IP_ARRAY[1]}:8081; \n server ${IP_ARRAY[2]}:8081; \n ip_hash; \n} \n upstream mycashier { \n server ${IP_ARRAY[1]}:8083; \n server ${IP_ARRAY[2]}:8083; \n ip_hash; \n}" /etc/nginx/conf.d/default.conf sed -i "36i location /user { \n proxy_pass http://myuser; \n} \n location /shopping { \n proxy_pass http://myshopping; \n} \n location /cashier { \n proxy_pass http://mycashier; \n}" /etc/nginx/conf.d/default.conf systemctl start nginx
06-23
标题基于Python的汽车之家网站舆情分析系统研究AI更换标题第1章引言阐述汽车之家网站舆情分析的研究背景、意义、国内外研究现状、论文方法及创新点。1.1研究背景与意义说明汽车之家网站舆情分析对汽车行业及消费者的重要性。1.2国内外研究现状概述国内外在汽车舆情分析领域的研究进展与成果。1.3论文方法及创新点介绍本文采用的研究方法及相较于前人的创新之处。第2章相关理论总结和评述舆情分析、Python编程及网络爬虫相关理论。2.1舆情分析理论阐述舆情分析的基本概念、流程及关键技术。2.2Python编程基础介绍Python语言特点及其在数据分析中的应用。2.3网络爬虫技术说明网络爬虫的原理及在舆情数据收集中的应用。第3章系统设计详细描述基于Python的汽车之家网站舆情分析系统的设计方案。3.1系统架构设计给出系统的整体架构,包括数据收集、处理、分析及展示模块。3.2数据收集模块设计介绍如何利用网络爬虫技术收集汽车之家网站的舆情数据。3.3数据处理与分析模块设计阐述数据处理流程及舆情分析算法的选择与实现。第4章系统实现与测试介绍系统的实现过程及测试方法,确保系统稳定可靠。4.1系统实现环境列出系统实现所需的软件、硬件环境及开发工具。4.2系统实现过程详细描述系统各模块的实现步骤及代码实现细节。4.3系统测试方法介绍系统测试的方法、测试用例及测试结果分析。第5章研究结果与分析呈现系统运行结果,分析舆情数据,提出见解。5.1舆情数据可视化展示通过图表等形式展示舆情数据的分布、趋势等特征。5.2舆情分析结果解读对舆情分析结果进行解读,提出对汽车行业的见解。5.3对比方法分析将本系统与其他舆情分析系统进行对比,分析优劣。第6章结论与展望总结研究成果,提出未来研究方向。6.1研究结论概括本文的主要研究成果及对汽车之家网站舆情分析的贡献。6.2展望指出系统存在的不足及未来改进方向,展望舆情
【磁场】扩展卡尔曼滤波器用于利用高斯过程回归进行磁场SLAM研究(Matlab代码实现)内容概要:本文介绍了利用扩展卡尔曼滤波器(EKF)结合高斯过程回归(GPR)进行磁场辅助的SLAM(同步定位与地图构建)研究,并提供了完整的Matlab代码实现。该方法通过高斯过程回归对磁场空间进行建模,有效捕捉磁场分布的非线性特征,同时利用扩展卡尔曼滤波器融合传感器数据,实现移动机器人在复杂环境中的精确定位与地图构建。研究重点在于提升室内等无GPS环境下定位系统的精度与鲁棒性,尤其适用于磁场特征明显的场景。文中详细阐述了算法原理、数学模型构建、状态估计流程及仿真实验设计。; 适合人群:具备一定Matlab编程基础,熟悉机器人感知、导航或状态估计相关理论的研究生、科研人员及从事SLAM算法开发的工程师。; 使用场景及目标:①应用于室内机器人、AGV等在缺乏GPS信号环境下的高精度定位与地图构建;②为磁场SLAM系统的设计与优化提供算法参考和技术验证平台;③帮助研究人员深入理解EKF与GPR在非线性系统中的融合机制及实际应用方法。; 阅读建议:建议读者结合Matlab代码逐模块分析算法实现细节,重点关注高斯过程回归的训练与预测过程以及EKF的状态更新逻辑,可通过替换实际磁场数据进行实验验证,进一步拓展至多源传感器融合场景。
你遇到的错误是: ```bash scp: dest open "/var/send_cmd.py": Permission denied ``` --- ## ✅ 问题原因 你试图将本地文件 `send_cmd.py` 复制到远程主机 `/var` 目录下,但 **普通用户 `pilot` 没有权限在 `/var` 目录中创建或写入文件**。 > 🔴 `/var` 是系统目录,通常只有 `root` 用户或具有 `sudo` 权限的用户才能写入。 --- ## ✅ 解决方案(推荐方法) ### ✅ 方法一:复制到用户家目录(最安全、最常用) ```bash scp send_cmd.py pilot@172.26.2.222:~/send_cmd.py ``` 这会把文件传到 `pilot` 用户的家目录:`/home/pilot/send_cmd.py`(或 `/var/home/pilot` 等,视系统而定),该目录默认可读写。 ✅ 优点: - 不需要 root 权限; - 安全合规; - 最常见的做法。 --- ### ✅ 方法二:复制到一个有权限的子目录(如 `/tmp` 或 `/var/tmp`) ```bash scp send_cmd.py pilot@172.26.2.222:/tmp/send_cmd.py ``` > ✅ `/tmp` 和 `/var/tmp` 通常是所有用户可写的临时目录。 ⚠️ 注意:这些目录中的文件可能在重启后被清除。 --- ### ✅ 方法三:使用 `sudo` 在远程保存到 `/var`(需额外步骤) 如果你**必须**放在 `/var` 下,可以先传到 `/tmp`,然后通过 SSH 登录并用 `sudo` 移动: ```bash # 第一步:传到 /tmp(允许写入) scp send_cmd.py pilot@172.26.2.222:/tmp/send_cmd.py # 第二步:SSH 登录并移动到 /var(使用 sudo) ssh pilot@172.26.2.222 sudo mv /tmp/send_cmd.py /var/send_cmd.py sudo chown root:root /var/send_cmd.py # 可选:设置属主 sudo chmod +x /var/send_cmd.py # 可选:添加执行权限 ``` > ⚠️ 前提:`pilot` 用户要有 `sudo` 权限,并且能执行 `mv` 等命令。 --- ### ✅ 方法四:使用 `ssh+sudo` 配合 `dd` 或 `tee`(高级技巧) 如果你想“直接”写入 `/var`,可以通过管道方式: ```bash cat send_cmd.py | ssh pilot@172.26.2.222 "sudo tee /var/send_cmd.py > /dev/null" ``` 然后输入密码(如果 `sudo` 需要),即可写入。 > ✅ 这种方式绕过 `scp` 的目标路径权限限制,利用 `sudo` 提权写入。 > > 💡 要求:`pilot` 必须在远程主机上有 `sudo tee` 的权限(一般默认支持)。 --- ## 🛠️ 补充建议 | 建议 | 说明 | |------|------| | ❌ 不要随意更改 `/var` 权限 | 如 `chmod 777 /var` 极其危险 | | ✅ 推荐使用 `~/` 或 `/tmp` | 更安全、更符合 Linux 规范 | | ✅ 文件传完后设置权限 | `chmod +x send_cmd.py` 如果它是脚本 | | ✅ 使用密钥登录替代密码 | 提高自动化效率(配合 SSH key) | --- ## ✅ 总结 | 方法 | 命令示例 | 是否推荐 | 说明 | |------|---------|----------|------| | 传到家目录 | `scp file.py pilot@...:~/` | ✅ 强烈推荐 | 安全、简单 | | 传到 `/tmp` | `scp file.py pilot@...:/tmp/` | ✅ 推荐 | 临时存放可用 | | 用 `sudo tee` 写入 `/var` | `cat file.py \| ssh ... "sudo tee /var/file.py"` | ⚠️ 按需使用 | 需要 sudo 权限 | | 直接 scp 到 `/var` | ❌ 不行 | ❌ 禁止 | 权限不足 | --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值