首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用子进程在本地执行远程脚本-远程脚本使用~/.profile中的变量

使用子进程在本地执行远程脚本是一种常见的技术,可以通过这种方式在本地机器上执行远程服务器上的脚本。这种方法通常用于自动化部署、远程执行命令等场景。

在Linux系统中,可以使用SSH(Secure Shell)协议来实现远程脚本的执行。SSH是一种网络协议,用于在不安全的网络中安全地执行远程命令和传输文件。通过SSH,可以在本地机器上使用子进程执行远程服务器上的脚本。

具体步骤如下:

  1. 配置SSH密钥认证:首先需要在本地机器上生成SSH密钥对,并将公钥添加到远程服务器的授权文件中。这样可以实现免密登录,方便自动化执行远程脚本。
  2. 使用子进程执行远程脚本:在本地机器上,可以使用Python的subprocess模块来创建子进程,并通过SSH命令执行远程脚本。以下是一个示例代码:
代码语言:python
代码运行次数:0
复制
import subprocess

# 远程服务器信息
remote_host = '远程服务器IP地址'
remote_user = '远程服务器用户名'

# 执行远程脚本命令
command = f'ssh {remote_user}@{remote_host} "bash -l -c \\"source ~/.profile && 远程脚本命令\\" "'

# 创建子进程并执行命令
process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = process.communicate()

# 输出执行结果
if process.returncode == 0:
    print('执行成功')
    print(stdout.decode())
else:
    print('执行失败')
    print(stderr.decode())

在上述代码中,remote_hostremote_user分别表示远程服务器的IP地址和用户名。command变量是执行远程脚本的命令,其中使用了source ~/.profile来加载远程服务器上的.profile文件中的变量。你需要将远程脚本命令替换为实际的远程脚本命令。

需要注意的是,上述代码仅为示例,实际使用时需要根据具体情况进行修改和调整。

推荐的腾讯云相关产品:腾讯云服务器(CVM),腾讯云SSH密钥对管理。你可以在腾讯云官网上找到相关产品的详细介绍和文档。

腾讯云服务器(CVM):https://cloud.tencent.com/product/cvm

腾讯云SSH密钥对管理:https://cloud.tencent.com/document/product/213/20242

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

CentOS使用expect批量远程执行脚本和命令

我们有时可能会批量去操作服务器,比如批量服务器上上传某个文件,安装软件,执行某个命令和脚本,重启服务,重启服务器等,如果人工去一台台操作的话会特别繁琐,并浪费人力。...这时我们可以使用expect,向目标服务器上发送指令去实现批量操作。 下面的例子将在centos上将一个文件,批量拷贝到其他服务商上,并执行相应命令 1....centos上安装expect yum install expect 2....编写expect脚本 copyfilebatch.sh 下面的脚本将向内网IP为 192.168.0.102 至 192.168.0.112 服务器分别拷贝一个rc.local文件,拷贝成功后,执行chmod...*yes/no" { send "yes\r"; exp_continue} "*password:" { send "$password\r" } } expect "#*" #要执行命令

1.6K31

【shell脚本】$ shell脚本使用

shell脚本 '$' 与不同符号搭配其表示意义也会不同 特殊标志符 含义 $0 当前脚本文件名 $n 传递给脚本或函数参数。n 是一个数字,表示第几个参数。...例如,第一个参数是$1,第二个参数是$2 $# 传递给脚本或函数参数个数 $* 传递给脚本或函数所有参数 $@ 传递给脚本或函数所有参数 $?...上个命令退出状态 $$ 当前Shell进程ID $() 与 `(反引号) 一样用来命令替换使用 ${} 引用变量划分出边界 注释:$* 和 $@ 都表示传递给函数或脚本所有参数,不被双引号(" "...)包含时,都以"$1" "$2" … "$n" 形式输出所有参数。...echo "$@" echo "$*" 执行 ./1.sh hello mayuan file name ./1.sh first param hello pid 142 total num of param

6.2K20
  • 使用Jenkins通过SSH插件远程控制主机执行脚本

    /bin/bash echo I am 192.168.1.20 [root@k8s-node2 ~]# chmod +x shell/test.sh //添加脚本执行权限 插件安装  主机...192.168.1.18Jenkins【系统管理】—【管理插件】,过滤出“SSH或者Publish over SSH插件”,然后直接安装插件,如图安装即可,下面会分开列出两个插件配置;或者去官网下载插件...创建凭据  【系统管理】—【Manage Credentials】—【凭据】—【系统】—【添加域】,填入域名,域名随便填就好,如果需要远程多个主机,你填入域名可以作为区分对象,我这里就创建一个全局凭证...插件配置  Jenkins【系统管理】—【系统配置】,划到“SSH remote hosts”来添加SSH远程节点,设置这一步前需要先设置好上面的凭证。  配置完后点击下方“保存”即可。...构建项目  构建完成后,左下角构建历史处点击刚才那条构建信息,然后点击“控制台日志输出”,就可以看到远程执行命令和shell脚本详细步骤信息了。

    3.9K30

    C代码如何使用链接脚本定义变量

    C代码为什么要使用取址符号 & ?...我们执行 foo = 1时,会先去符号表中找到foo对应地址,然后把数值1填到那个地址对应内存; 我们执行 int *a = &foo时,会直接把符号表foo地址,写给a。...二,链接脚本,假设 __bss_start = 1000 __bss_start并不是一个变量,它只是一个值,并不需要在内存留出一段空间来保存它; C语言中,符号表中会有一个名为__bss_start...所以:C语言中,要去使用链接脚本定义值时,应该这样做: extern int __bss_start; int val = &__bss_start; 使用取址符号&去得到它在符号表值。...注意,这个值只是链接脚本定义值,并不表示某个变量地址。

    4K20

    Shell-aliasShell脚本使用

    概述 shell开启alias 实际操作 概述 众所周知,shell脚本使用是非交互式方式,非交互式模式下alias扩展功能默认是关闭,此时虽然可以定义alias别名,但是shell不会将alias...别名扩展成对应命令,而是将alias别名本身当作命令执行,如果shell内置命令和PATH均没有与alias别名同名命令,则shell会找不到指定命令。...---- shell开启alias 使用shell内置命令shopt命令来开启alias扩展选项。...其中应用启停使用了alias建立同义词来操作,如果想要在脚本使用,必须开启同义词才。...项目启动中会依赖一些环境变量,所以双机启动脚本需要显式引入.bash_profile文件。 所以我们将 开启alias命令放在 .bash_profile

    2.3K10

    使用 WPADPAC 和 JScriptwin11进行远程代码执行

    初步调查显示,负责执行这些配置文件 JS 引擎是 jscript.dll - 也支持 IE7 和 IE8 旧版 JS 引擎(如果使用适当脚本属性, IE7/8 兼容模式下仍然可以 IE11 访问...这有好有坏 - 一方面,这意味着并非每个 Chakra 错误都会自动成为本地网络远程攻击,但另一方面,这意味着一些相当旧代码将负责执行我们 Javascript。...攻击场景:通过恶意 wpad.tld 互联网上远程 WPAD 一个特别奇怪之处在于它递归地遍历本地机器名称以查找要查询域。...这允许特定国家/地区注册 wpad 任何人通过将自己设置为所有流量或感兴趣站点代理,对该国家/地区大部分 Internet 流量执行中间人攻击。...一个反复出现问题是堆栈上局部变量默认不会添加到根对象列表,这意味着程序员需要记住将它们添加到垃圾收集器根列表,特别是如果这些变量引用对象可以是函数生命周期内被删除。

    5.2K470

    脚本单独使用djangoORM模型详解

    有时候测试django中一些模块时,不想重新跑一整个django项目,只想跑单个文件,正好写在if __name__ == ‘__main__’: 这样也不会打扰到正常代码逻辑 方法 正常方法 大家都知道方法就是...’python manage.py shell’,当然我知道这可能不是你需要; 更好用方法 脚本import模型前调用下面几行即可: import os, sys BASE_DIR = os.path.dirname...’from XXXX.models import XXX’就不会报错了 补充知识:Django使用外部文件对models操作容易产生问题 看代码吧!...导入models时候,还没有django对应环境下导入 这里导入顺序很重要 import os import django os.environ.setdefault('DJANGO_SETTINGS_MODULE...以上这篇脚本单独使用djangoORM模型详解就是小编分享给大家全部内容了,希望能给大家一个参考。

    4.9K10

    使用 WPADPAC 和 JScriptwin11进行远程代码执行3

    不幸是,从作为本地服务运行进程,我们无法与网络通信,但我们可以做是将我们权限提升有效负载从内存删除到本地服务可以从那里写入和执行磁盘位置。...虽然 Windows 总是可能存在未修复权限提升,但我们不需要找到新漏洞来提升我们权限。相反,我们可以滥用内置功能从本地服务升级到系统帐户。...因此,我们 C++ 实现了我们自己更简单版本,它使用CreateProcessWithToken API直接生成带有 SYSTEM 令牌任意进程。...然后这个二进制文件作为 SYSTEM 执行一个命令(我们例子是硬编码 'cmd')。...我们将很快问题跟踪器中发布漏洞利用源代码。 结论 执行不受信任 JavaScript 代码是危险非沙箱进程执行它更危险。

    2K310

    使用 WPADPAC 和 JScriptwin11进行远程代码执行1

    JScript VAR 是一个 24 字节( 64 位版本上)结构,它表示一个 JavaScript 变量,并且本质上与此 MSDN 文章描述 VARIANT 数据结构相同。...在这一点上,我们不会泄露任何可执行模块地址,这将在稍后发布。相反,我们目标是击败高熵堆随机化,并使漏洞利用第二阶段可靠,而无需使用堆喷射。...像这样越界读取字符串内容将在一个可以检查字符串变量返回给调用者。 我们将要使用第二次越界读取,但首先我们需要弄清楚如何将受控数据放入start_index和end_index 。...特制琴弦内容现阶段不重要,但在下一阶段会很重要,所以会在此进行说明。另请注意,通过检查堆元数据,我们可以轻松确定进程正在使用哪个堆实现(段堆与 NT 堆)。...第 2 阶段:溢出 漏洞利用第 2 阶段,我们将使用这个堆溢出漏洞 Array.sort

    7.8K950

    如何使用CIMplant收集远程系统数据并执行命令

    关于CIMplant CIMplant是WMImplant项目的C#实现,并扩展了原项目的相关功能,该工具 能够使用CIM或WMI来查询远程系统,并且可以使用用户提供凭据或当前用户会话来执行操作。...CIMplant使用了C#对@christruncerWMImplant项目进行了重写和功能扩展,可以帮助广大研究人员从远程系统收集数据、执行命令以及提取数据等等。...该工具允许使用WMI或CIM来进行连接,并且需要目标系统本地管理员权限来执行任务操作。...工具安装 为了方便起见,广大研究人员可以直接访问该项目的【Releases页面】来获取最新构建版本,如果你想要手动构建的话,请参照下列步骤: Visual Studio中加载sln; 点击顶部菜单...你还可以Microsoft Windows WinRM/分析日志查找事件ID 1295。

    1.2K30

    Asp.Net Core中使用DI方式使用Hangfire构建后台执行脚本

    最近项目中需要用到后台Job,原有Windows我们会使用命令行程序结合计划任务或者直接生成Windows Service,现在.Net Core跨平台了,虽然Linux下也有计划任务,但跟原有方式一样...基本使用 Hangfire使用非常简单,基本上使用以下几个静态方法: //执行后台脚本,仅执行一次 BackgroundJob.Enqueue(() => Console.WriteLine("Fire-and-forget...; 依赖注入 .Net Core处处是DI,一不小心,你会发现你使用Hangfire时候会遇到各种问题,比如下列代码: public class HomeController : Controller...我们试着写两个后台脚本,CheckService和TimerService,CheckServiceCheck方法执行计划时,会再次调用Hangfire来定时启动TimerService: CheckService...了,我们可以Startup.csConfigure方法中使用如下代码: public void Configure(IApplicationBuilder app, IHostingEnvironment

    2.1K50

    如何编写一个自动关闭某个进程脚本,并使用cron定时执行

    为了避免这种情况发生,我们可以编写一个自动关闭某个进程脚本。本文将介绍如何编写一个自动关闭某个进程脚本,并使用cron定时执行本文中,我们将以关闭Java进程为例进行讲解。...fi以上脚本,首先使用pgrep命令查找Java进程PID,如果没有找到,则输出提示信息;否则,使用kill命令关闭Java进程,并输出成功信息。...设置定时任务一旦我们编写了自动关闭进程脚本,就可以Linux系统设置一个定时任务来定期执行这个脚本。Linux系统提供了一个非常强大工具,cron,来实现这个功能。...下面是一个简单例子:# 执行关闭Java进程脚本0 3 * * * /path/to/kill_java.sh以上定时任务表示,每天凌晨3点执行kill_java.sh脚本,即关闭Java进程。...总结在本文中,我们介绍了如何编写一个自动关闭某个进程脚本,并使用cron定时执行。这种方法可以帮助我们避免由于进程占用过多资源导致服务器性能下降情况发生。

    1.6K40

    【SQL Server】 SSMS 使用 生成 SQL 脚本 方式 实现 数据库 备份 还原 ( 数据备份操作 - 生成 SQL 脚本 | 数据还原操作 - 执行 SQL 脚本 )

    查询、优化和开发工作 ; 本篇博客介绍如何使用 SSMS 进行数据库备份 ; 使用原理是 将数据库 数据 生成为 SQL 脚本 ( 几万条 SQL 语句 ) , 还原数据库时候 , 先 TRUNCATE..., 这里 勾选要保存数据库表 , 不需要保存 不要勾选 ; 数据库表 勾选完毕后 , 点击下一步 按钮 ; 该步骤 , 设置要保存 SQL 脚本 存放位置 , 我设置位置是 " C:\Users...仅限数据 : 指的是 生成 插入数据 SQL 语句 , 执行前要删除数据库对应表 , 使用 TRUNCATE TABLE table_name; 删除数据库表即可 ; 架构和数据 : 指的是 生成..., 点击 完成 按钮 ; 如果使用 固态硬盘 , 上述操作 几秒 就可以完成 , 如果使用机械硬盘 , 可能需要几分钟 ; 保存位置 查看生成脚本 ; 打开该文件 , 发现这就是一个文本文件 ,...脚本加载到 SSMS ; 脚本 , 右键点击空白处 , 弹出菜单中选择 " 执行 " 选项 , 即可执行 等待执行完毕即可完成数据还原操作 ;

    26210

    如何使用RDM公网环境远程访问本地Docker部署Redis数据库

    Redis作为一款高速缓存key value键值对数据库,许许多多场景中广泛使用,由于是把数据存储在内存,所以读写效率极高。而在docker中部署Redis也非常简单,下面就来一起看看吧。...使用docker拉取redis镜像 首先在终端执行下方命令拉取镜像: sudo docker pull redis 然后执行查看镜像命令: sudo docker images 可以看到成功拉取了Redis...本地连接测试 4.1 安装redis图形化界面工具 现在我们已经docker本地部署了redis容器,如果要在本地进行连接测试, 可以下载redis图形化界面工具:Redis Desktop Manager...公网远程访问本地redis 不过我们目前只能在本地使用刚刚部署Jupyer Notebook,如果身在异地,想要远程访问本地部署redis容器,但又没有公网ip怎么办呢?...使用cpolar内网穿透工具无需购买域名服务器,也不用设置路由器那么麻烦,轻松实现大家公网远程访问本地服务需求!

    19410

    如何使用任意浏览器公网环境远程访问本地部署Nightingale管理界面

    前言 本文主要介绍如何在本地Linux系统部署 Nightingale 夜莺监控并结合cpolar内网穿透工具实现远程也可以访问,提高运维效率。解决本地部署后无法远程访问难题。...公网地址,我们可以很容易实现远程访问,而无需自己注册域名购买云服务器.下面是安装cpolar步骤 cpolar官网地址: https://www.cpolar.com 使用一键脚本安装命令 curl...公网远程访问Nightingale管理界面 使用上面的https公网地址在任意设备浏览器访问,即可成功看到我们Nightingale界面,这样一个公网地址且可以远程访问就创建好了....输入上面初始化用户名密码即可登陆成功 6. 固定Nightingale公网地址 由于以上使用cpolar所创建隧道使用是随机公网地址,24小时内会随机变化,不利于长期远程访问。...返回登录cpolar web UI管理界面,点击左侧仪表盘隧道管理——隧道列表,找到所要配置隧道,点击右侧编辑 修改隧道信息,将保留成功二级域名配置到隧道 域名类型:选择二级域名 Sub

    8820
    领券