当前位置: 首页 > article >正文

sshpass 实现的SSH免交互密码登录和ARM移植

sshpass在ubuntu上的测试

安装:

sudo apt-get install sshpass 

实例: 

sshpass -p 'yourpassword' ssh root@192.168.5.103

这可以避免一次交互, 

sshpass -p "root" ssh root@192.168.5.103 

脚本的写法:

#!/bin/bash
export SSHPASS='root'
msg=$(sshpass -e ssh root@192.168.5.103 ls /home/root/)
echo $msg

源码下载

网址:Non-interactive ssh password auth - Browse /sshpass at SourceForge.net

目前的最新版本是1.10,下载后解压

tar zxvf sshpass-1.10.tar.gz

交叉编译脚本:

文件命名为build.sh

#!/bin/bash
set -e

# 配置交叉编译环境变量
ARM_GCC_PATH="/usr/local/arm/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf"
export PATH=${ARM_GCC_PATH}/bin:$PATH
export CC=arm-linux-gnueabihf-gcc
export CFLAGS="-I${ARM_GCC_PATH}/include"

#全局变量
install_path=`pwd`/install_arm
local_rootfs_path=/home/lkmao/nfsroot/myrootfs
cur_dir=`pwd`
SUDO=""

function build_sshpath() {
    echo "install path : $install_path"
    mkdir -p $install_path
    # 配置项目
    ./configure --host=arm-linux-gnueabihf
    # 编译项目
    make
    # 安装到指定目录
    make install prefix=$install_path
    file $install_path/bin/sshpass
}
 
function port_sshpath() {
    echo "port sshpath to rootfs"
    if [ -z "$local_rootfs_path" ] ; then
        echo "local_rootfs_path is null"
        return
    fi
    ${SUDO} cp $install_path/bin/sshpass $local_rootfs_path/usr/bin
    ${SUDO} chown root:root $local_rootfs_path/usr/bin/sshpass
    echo "port sshpath to rootfs done"
}
function check_root() {
    if [ `whoami` == "root" ];then
        SUDO=""
        echo "root user"        
    else
        SUDO="sudo"
        echo "not root user"
    fi
}
 
#int main(int argc, char *argv[]){ 
    check_root
    shell_full_name=$0
    shell_short_name="${shell_full_name##*/}"
    echo shell_short_name=$shell_short_name
    
    if [ "$shell_short_name" == "build.sh" ];then
        echo "build sshpath"
        build_sshpath
        port_sshpath
        if [ ! -e "port.sh" ];then
            ln -s build.sh port.sh || echo "port.sh link build.sh failed"
            echo "get root authority"
        fi
        if [ ! -e "port.sh" ];then
        ${SUDO} ln -s build.sh port.sh
        fi
        
    elif [ "$shell_short_name" == "port.sh" ];then
        echo "port.sh"
        port_sshpath
        echo "port sshpath to rootfs done"
    fi
    
    echo "task done"
    exit 0
# }

测试

命令行测试:

sshpass -p "password" ssh username@192.168.5.5

脚本测试: 

#!/bin/sh
export SSHPASS='root'
msg=$(sshpass -e ssh root@192.168.5.103 ls /home/root/)
echo $msg

文件发送测试

sshpass -p "lkmao" scp sshpass_test.sh lkmao@192.168.5.111:/home/lkmao/ 

小结 


http://www.kler.cn/news/305176.html

相关文章:

  • Java中List集合去重
  • 【python计算机视觉编程——9.图像分割】
  • 什么是 SMB 服务器以及它如何工作?
  • Nginx引发的惨案
  • 动手学深度学习(pytorch)学习记录28-使用块的网络(VGG)[学习记录]
  • 【计算机网络】HTTPHTTPS
  • vue前端实现下载导入模板文件
  • 1405 问题 E: 世界杯
  • 基于深度学习的信号滤波:创新技术与应用挑战
  • PyTorch 和 TensorFlow
  • 【深度学习】神经网络-怎么分清DNN、CNN、RNN?
  • Anaconda pytorch-gpu CUDA CUDNN 安装指南
  • clickhouse 保证幂等性
  • 前端面试记录
  • mybatis-plu分页出现问题
  • JVM面试真题总结(九)
  • windows检查端口占用并关闭应用
  • git报错,error: bad signature 0x00000000fatal: index file corrupt
  • 3. 进阶指南:自定义 Prompt 提升大模型解题能力
  • 新手教学系列——用Nginx将页面请求分发到不同后端模块
  • 足球大小球及亚盘数据分析与机器学习实战详解:从数据清洗到模型优化
  • vue项目中引入组件时出现的Module is not installed问题
  • 上图为是否色发
  • 15、Python如何获取文件的状态
  • ARM V2处理器微架构分析
  • input和editor一起使用在ios上聚焦异常
  • 【计算机网络 - 基础问题】每日 3 题(四)
  • 目标检测中的解耦和耦合、anchor-free和anchor-base
  • 分销系统后端技术文档
  • 大数据Flink(一百一十八):SQL水印操作(Watermark)