使用这个脚本 #!/usr/bin/expect -f cd /home/111 spawn scp -r * root@10.18.18.1:/data/111 set timeout -1 expect "*password:" send "1111\n" 在执行的时候报错 *: No such file or directory
时间: 2024-02-05 13:02:25 浏览: 176
这个错误是因为在你执行的脚本中,使用了`cd`命令,但是`cd`命令是shell命令,而不是expect命令。因此,你需要将`cd`命令去掉,并使用`set`命令设置当前工作目录。
下面是修改后的脚本:
```bash
#!/usr/bin/expect -f
# 设置工作目录
set workDir /home/111
cd $workDir
# 定义变量
set host "10.18.18.1"
set user "root"
set password "1111"
set localPath "."
set remotePath "/data/111"
# 执行scp
spawn scp -r $localPath $user@$host:$remotePath
expect {
"yes/no" { send "yes\r"; exp_continue }
"password:" { send "$password\r" }
}
expect "100%"
expect eof
```
在这个脚本中,我们使用`set`命令设置了当前工作目录,然后执行了scp命令,将当前目录下的所有文件和子目录上传到远程主机。我们使用`expect`命令匹配密码输入提示,并发送密码。最后,我们等待文件传输完成,并使用`expect eof`命令关闭连接。
注意,如果你想要上传的是当前目录下的所有文件和子目录,应该将`localPath`设置为`.`,而不是`*`。因为`*`会展开为当前目录下的所有文件和子目录,而不是一个整体的路径。
相关问题
#!/usr/bin/expect -f和#!/bin/bash
引用中给出了一个脚本的示例,其中#!/usr/bin/expect -f是脚本的第一行,用来指定使用expect作为脚本的解释器。这意味着这个脚本将使用expect的语法和功能来执行。而#!/bin/bash是另一种脚本的解释器,用于指定使用bash作为脚本的解释器。bash是一种常用的Unix shell程序,用于执行命令和脚本。
简而言之,#!/usr/bin/expect -f用于指定使用expect解释器来执行脚本,而#!/bin/bash用于指定使用bash解释器来执行脚本。两者都是根据脚本的需要来选择合适的解释器。<em>1</em><em>2</em><em>3</em>
#### 引用[.reference_title]
- *1* *2* *3* [shell阶段-day12-expect](https://blog.csdn.net/qq_23995091/article/details/113571554)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item]
[ .reference_list ]
[root@master lwt]# yum remove java-1.* 将JDK文件解压,放到/usr/java目录下 [lwt@master ~]su root [root@master ~]# cd /home/lwt/resources/software/jdk [root@master jdk]# mkdir /usr/java [root@master jdk]# mv jdk-8u131-linux-x64.tar.gz /usr/java/ [root@master jdk]# cd /usr/java [root@master java]# tar -xvf /usr/java/jdk-8u131-linux-x64.tar.gz [root@master java]# chmod +x /usr/java/jdk1.8.0_131/bin/* 怎么命令
这是一系列命令,用于移除系统上已安装的 Java 版本,并安装 JDK 8u131。具体步骤如下:
1. 移除系统上已安装的 Java 版本:`yum remove java-1.*`
2. 将 JDK 文件解压并移动到 `/usr/java` 目录下:
```
mkdir /usr/java
mv jdk-8u131-linux-x64.tar.gz /usr/java/
cd /usr/java
tar -xvf /usr/java/jdk-8u131-linux-x64.tar.gz
```
3. 授权 JDK 可执行文件:
```
chmod +x /usr/java/jdk1.8.0_131/bin/*
```
这些命令的作用是:
- `mkdir`:创建目录
- `mv`:移动文件
- `cd`:切换当前工作目录
- `tar`:解压文件
- `chmod`:修改文件权限
阅读全文