scp命令 — 用于Linux之间直接传输文件

SCP命令常用于两台Linux主机间安全传输文件,虽然速度较慢,但通过SSH保证了传输的安全性。利用expect可以自动化输入密码进行SCP传输。在涉及堡垒机的场景下,传输过程会有所不同,需要进一步研究或查阅资料解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SCP传输文件

当两台LINUX主机之间要互传文件时可使用SCP命令来实现
scp传输速度较慢,但使用ssh通道保证了传输的安全性

# 安装SCP
yum install openssh-clients -y

# 本地文件拷贝至远程
scp 本地文件路径 远程用户名@计算机IP或者计算机名称:远程目标路径
# 不写用户名也可以
scp 本地文件路径 计算机IP或者计算机名称:远程路径

# 传输目录需要
scp -r 目录路径 计算机IP或者计算机名称:远程路径

# 远程文件拷贝至本地
scp 远程用户名@计算机IP或者计算机名称:远程文件路径 本地文件路径

# 若目标路径下已经存在同名文件,会替换掉原文件,百度是否替换原文件跟命令有关,我这可以替换原文件的命令是:
# scp 文件名 目标目录
scp test.sh username@IP:/tmp
expect在scp传输中自动输入密码

expect命令见我另一篇博客或百度

#!/usr/local/bin/expect
# 上面这一行就不一样,普通的shell开头是#!/bin/bash,这里不是
# 在这种情况下,定义局部变量不能跟在普通shell中一样,像是a="bc",会报错
# 要像下面这行一样,set a bc这样才行,set a "bc"应该也可以不过我没试过
set timeout 30
spawn scp testFile root@192.168.46.101:/tmp/
expect {
  "(yes/no)?"
  {
    send "yes\n"
    expect "*assword:"
      {
        send "123456\n"
      }
  }
  "*assword:"
  {
    send "123456\n"
  }
}
expect "100%"
expect eof

# 遇到过一个问题,程序不能正常运行,原因是我把expect后的 { 放到下一行去了
但是如果有堡垒机情况就不同了

先不尝试了,自行百度吧先

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值