shell 手动输入数字,不同数字去source不同的function脚本文件

时间: 2024-02-27 21:54:12 浏览: 14
可以通过以下的shell脚本实现: ```bash #!/bin/bash echo "请输入数字(1或2):" read num if [ $num -eq 1 ] then source script1.sh elif [ $num -eq 2 ] then source script2.sh else echo "无效的输入" fi ``` 在这个脚本中,首先通过 `read` 命令手动输入一个数字,然后通过 `if` 语句判断输入的数字是 1 还是 2,如果是 1,则执行 `source script1.sh` 命令,如果是 2,则执行 `source script2.sh` 命令,否则输出错误信息。 你可以根据自己的需求修改脚本中的文件名和相应的操作。
相关问题

使用shell脚本scp自动登录远程主机,不需要每次输入密码

### 回答1: 在使用 scp 命令传送文件到远程主机时,每次都需要输入密码是很麻烦的。有一种方法可以让你在使用 scp 命令时不需要输入密码,那就是使用 ssh 免密码登录。 要实现 ssh 免密码登录,需要在本地主机上生成一对密钥(公钥和私钥),然后将公钥拷贝到远程主机的 authorized_keys 文件中。接下来,当你使用 ssh 命令登录远程主机时,就不需要再输入密码了。 下面是一个使用 ssh 免密码登录的例子: 1. 在本地主机上生成密钥对: ```bash $ ssh-keygen -t rsa ``` 2. 将公钥拷贝到远程主机的 authorized_keys 文件中: ```bash $ scp ~/.ssh/id_rsa.pub user@remote_host:~/.ssh/authorized_keys ``` 3. 现在,你就可以使用 ssh 命令免密码登录远程主机了: ```bash $ ssh user@remote_host ``` 注意:上述步骤中的 user 和 remote_host 都需要替换为实际的用户名和主机名。 如果你想在 shell 脚本中使用 scp 命令自动登录远程主机,可以在脚本中加入以下代码: ```bash # 使用 scp 命令将文件 file.txt 传送到远程主机的 /tmp 目录中 scp file.txt user@remote_host:/tmp ``` ### 回答2: 要实现Shell脚本通过scp自动登录远程主机而不需要每次输入密码,可以通过使用密钥认证来实现。以下是实现步骤: 1. 在本地生成公钥和私钥对。使用以下命令在本地生成密钥对: ``` ssh-keygen -t rsa ``` 2. 在远程主机上创建.ssh目录。使用以下命令在远程主机上创建存储密钥的目录: ``` ssh user@remote_host mkdir -p .ssh ``` 3. 将本地公钥复制到远程主机上。使用以下命令将本地公钥复制到远程主机: ``` cat ~/.ssh/id_rsa.pub | ssh user@remote_host 'cat >> .ssh/authorized_keys' ``` 4. 确保远程主机上的权限正确。使用以下命令修改远程主机上的权限: ``` ssh user@remote_host "chmod 700 .ssh; chmod 640 .ssh/authorized_keys" ``` 5. 确认密钥认证已设置成功。使用以下命令登录到远程主机检查是否需要输入密码: ``` ssh user@remote_host ``` 6. 创建一个Shell脚本,使用scp命令进行文件传输。将以下内容保存到一个名为script.sh的文件中: ``` #!/bin/bash scp /path/to/local/file user@remote_host:/path/to/remote/file ``` 7. 授予Shell脚本执行权限。使用以下命令为脚本添加执行权限: ``` chmod +x script.sh ``` 8. 执行脚本。使用以下命令运行脚本: ``` ./script.sh ``` 现在,脚本将自动登录远程主机并进行文件传输,而不会每次都要求输入密码。请确保替换命令中的"user"、"remote_host"、"/path/to/local/file"和"/path/to/remote/file"为实际的用户名、远程主机地址、本地文件路径和远程文件路径。 ### 回答3: 要实现使用shell脚本scp自动登录远程主机,不需要每次输入密码,可以使用密钥认证的方式来实现。 首先,在本地主机生成一对密钥,私钥将保存在本地,而公钥将复制到远程主机上。可以使用ssh-keygen命令生成: ``` ssh-keygen -t rsa ``` 然后,将公钥复制到远程主机,请使用ssh-copy-id命令(如果没有此命令,可以手动复制公钥内容并粘贴到远程主机的~/.ssh/authorized_keys文件中): ``` ssh-copy-id remote_username@remote_host ``` 现在,可以编写一个shell脚本,其中包含scp命令,而无需每次输入密码: ```shell #!/bin/bash # 远程主机的用户名和IP地址 remote_username="remote_username" remote_host="remote_host" # 源文件和目标文件的路径 source_file="/path/to/source_file" target_file="/path/to/target_file" # 使用scp命令进行拷贝 scp -i ~/.ssh/id_rsa $source_file $remote_username@$remote_host:$target_file ``` 请将上述脚本中的remote_username、remote_host、source_file和target_file替换为实际的值。这样,每次运行脚本时,就不会需要手动输入密码了。 需要注意的是,为了确保脚本的安全性,建议将私钥文件(如上述示例中的id_rsa)设置为仅限当前用户可读权限(chmod 600 ~/.ssh/id_rsa)。这样,只有脚本所属用户可以读取该私钥,增加了安全性。

shell交互式输入

回答: 在shell脚本中,可以通过使用read命令实现交互式输入。\[1\] 该命令可以用于提示用户输入,并将输入的内容保存到变量中。例如,可以使用read命令提示用户输入一个数字和一个名称,然后将这些输入的值打印出来。\[3\] 另外,在使用expect命令时,可以使用send命令发送交互信息,与手动输入相同。在命令字符串的结尾加上"\r",如果出现异常等待的状态,可以进行核查。\[2\] 最后,使用interact命令可以保持交互状态,将控制权从expect交还给shell,这样shell就可以执行spawn加壳的命令。如果没有使用interact命令,即使已经成功输入,也不会执行shell命令,因为控制权仍然在expect手中,而expect无法解释shell命令。 #### 引用[.reference_title] - *1* *3* [【shell】实现交互|read读取键盘输入](https://blog.csdn.net/bandaoyu/article/details/118491110)[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^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Linux Shell 脚本交互输入](https://blog.csdn.net/qq_36614557/article/details/121432030)[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^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

相关推荐

最新推荐

recommend-type

Shell脚本实现自动输入密码登录服务器

主要介绍了Shell脚本实现自动输入密码登录服务器,本文使用expect来实现这个需求,讲解了expect的安装及使用脚本,需要的朋友可以参考下
recommend-type

一个监控LINUX目录和文件变化的Shell脚本分享

主要介绍了一个监控LINUX目录和文件变化的Shell脚本分享,对服务器经常被挂马的朋友时分有用,需要的朋友可以参考下
recommend-type

shell脚本实现文件锁功能

主要介绍了shell脚本实现文件锁功能,本文实现了一个排它锁,从而实现避免脚本重复执行,需要的朋友可以参考下
recommend-type

Shell脚本读取标准ini配置文件Demo

主要介绍了Shell脚本读取标准ini配置文件Demo,本文直接给出代码实例,需要的朋友可以参考下
recommend-type

Shell脚本实现复制文件到多台服务器的代码分享

主要介绍了Shell脚本实现复制文件到多台服务器的代码分享,用在多机集群环境中非常方便,需要的朋友可以参考下
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB图像处理算法宝典:从理论到实战

![MATLAB图像处理算法宝典:从理论到实战](https://img-blog.csdnimg.cn/20200717112736401.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2d1emhhbzk5MDE=,size_16,color_FFFFFF,t_70) # 1. MATLAB图像处理基础理论 MATLAB图像处理是一种利用MATLAB编程语言进行图像处理的强大工具。它提供了丰富的函数和工具箱,用于图像获取、增强、分
recommend-type

matlab中1/x的非线性规划

在MATLAB中,可以使用非线性规划函数(`fmincon`)来优化一个包含1/x的非线性目标函数。下面是一个简单的例子: ```matlab % 定义目标函数 fun = @(x) 1/x; % 定义约束函数(这里没有约束) nonlcon = []; % 定义初始点 x0 = 1; % 定义优化选项 options = optimoptions('fmincon', 'Display', 'iter'); % 进行非线性规划 [x, fval] = fmincon(fun, x0, [], [], [], [], [], [], nonlcon, options); ``` 在
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。