1.0.0.20092802

Former-commit-id: f2e6447a9a1d1e7906d71b2795bb54ba458cc0bc
Former-commit-id: 036bc081b2d6b3f244da352fe9719785f39a0cf0
TSXN
wanggang 5 years ago
parent 85c3d0e05a
commit 0082905b4e

@ -53,7 +53,7 @@ namespace Infrastructure.Extensions
var ret = new StringBuilder(); var ret = new StringBuilder();
foreach (var item in ms.ToArray()) foreach (var item in ms.ToArray())
{ {
ret.AppendFormat("{0:X2}", item); ret.AppendFormat(CultureInfo.InvariantCulture, "{0:X2}", item);
} }
return ret.ToString(); return ret.ToString();
} }

@ -1,4 +1,4 @@
using Application.Domain.Entities; using Application.Domain.Entities;
using Application.Models; using Application.Models;
using Infrastructure.Application; using Infrastructure.Application;
using Infrastructure.Data; using Infrastructure.Data;
@ -37,8 +37,8 @@ namespace IoT.Shared.Areas.Admin.Controlls
.WhereIf(!string.IsNullOrEmpty(model.Query.Type), o => o.Type.Contains(model.Query.Type, StringComparison.OrdinalIgnoreCase)) .WhereIf(!string.IsNullOrEmpty(model.Query.Type), o => o.Type.Contains(model.Query.Type, StringComparison.OrdinalIgnoreCase))
.WhereIf(!string.IsNullOrEmpty(model.Query.Name), o => o.Name.Contains(model.Query.Name, StringComparison.OrdinalIgnoreCase)) .WhereIf(!string.IsNullOrEmpty(model.Query.Name), o => o.Name.Contains(model.Query.Name, StringComparison.OrdinalIgnoreCase))
.WhereIf(!string.IsNullOrEmpty(model.Query.Description), o => o.Description.Contains(model.Query.Description, StringComparison.OrdinalIgnoreCase)) .WhereIf(!string.IsNullOrEmpty(model.Query.Description), o => o.Description.Contains(model.Query.Description, StringComparison.OrdinalIgnoreCase))
.WhereIf(!string.IsNullOrEmpty(model.Query.Maxinum), o => o.Maxinum == model.Query.Maxinum) .WhereIf(!string.IsNullOrEmpty(model.Query.Minimum), o => o.Minimum == model.Query.Minimum)
.WhereIf(!string.IsNullOrEmpty(model.Query.Minimum), o => o.Minimum == model.Query.Maxinum); .WhereIf(!string.IsNullOrEmpty(model.Query.Maxinum), o => o.Maxinum == model.Query.Maxinum);
} }
public override void ToDisplayModel(Parameter entity, EditParameterModel model) public override void ToDisplayModel(Parameter entity, EditParameterModel model)

@ -1,4 +1,4 @@
using Application.Domain.Entities; using Application.Domain.Entities;
using Application.Models; using Application.Models;
using Infrastructure.Application; using Infrastructure.Application;
using Infrastructure.Data; using Infrastructure.Data;
@ -33,9 +33,9 @@ namespace IoT.Shared.Areas.Admin.Controlls
return base.Query(model, query) return base.Query(model, query)
.WhereIf(model.Query.CategoryId.HasValue, o => o.CategoryId == model.Query.CategoryId.Value) .WhereIf(model.Query.CategoryId.HasValue, o => o.CategoryId == model.Query.CategoryId.Value)
.WhereIf(!string.IsNullOrEmpty(model.Query.Name), o => o.Name.Contains(model.Query.Name, StringComparison.OrdinalIgnoreCase)) .WhereIf(!string.IsNullOrEmpty(model.Query.Name), o => o.Name.Contains(model.Query.Name, StringComparison.OrdinalIgnoreCase))
.WhereIf(!string.IsNullOrEmpty(model.Query.Number), o => o.Name.Contains(model.Query.Number, StringComparison.OrdinalIgnoreCase)) .WhereIf(!string.IsNullOrEmpty(model.Query.Number), o => o.Number.Contains(model.Query.Number, StringComparison.OrdinalIgnoreCase))
.WhereIf(!string.IsNullOrEmpty(model.Query.Path), o => o.Name.Contains(model.Query.Path, StringComparison.OrdinalIgnoreCase)) .WhereIf(!string.IsNullOrEmpty(model.Query.Path), o => o.Path.Contains(model.Query.Path, StringComparison.OrdinalIgnoreCase))
.WhereIf(!string.IsNullOrEmpty(model.Query.ApiJson), o => o.Name.Contains(model.Query.ApiJson, StringComparison.OrdinalIgnoreCase)); .WhereIf(!string.IsNullOrEmpty(model.Query.ApiJson), o => o.ApiJson.Contains(model.Query.ApiJson, StringComparison.OrdinalIgnoreCase));
} }
public override void ToDisplayModel(Product entity, EditProductModel model) public override void ToDisplayModel(Product entity, EditProductModel model)

@ -1,4 +1,4 @@
using Application.Domain.Entities; using Application.Domain.Entities;
using Infrastructure.Application; using Infrastructure.Application;
using Infrastructure.Data; using Infrastructure.Data;
using Infrastructure.Extensions; using Infrastructure.Extensions;
@ -32,6 +32,7 @@ namespace IoTCenter.Areas.Admin.Controllers
{ {
ViewData.SelectList(o => model.Query.OrganId, () => this._ajax.GetOrganSelectList(model.Query.OrganId)); ViewData.SelectList(o => model.Query.OrganId, () => this._ajax.GetOrganSelectList(model.Query.OrganId));
return query return query
.WhereIf(model.Query.OrganId.HasValue, o => o.OrganId == model.Query.OrganId.Value)
.WhereIf(!string.IsNullOrEmpty(model.Query.Name), o => o.Name.Contains(model.Query.Name)) .WhereIf(!string.IsNullOrEmpty(model.Query.Name), o => o.Name.Contains(model.Query.Name))
.WhereIf(model.Query.Hidden.HasValue, o => o.Hidden == model.Query.Hidden.Value) .WhereIf(model.Query.Hidden.HasValue, o => o.Hidden == model.Query.Hidden.Value)
.OrderBy(o => o.DisplayOrder); .OrderBy(o => o.DisplayOrder);

@ -1,4 +1,4 @@
using Application.Domain.Entities; using Application.Domain.Entities;
using Infrastructure.Application; using Infrastructure.Application;
using Infrastructure.Data; using Infrastructure.Data;
using Infrastructure.Extensions; using Infrastructure.Extensions;
@ -37,6 +37,7 @@ namespace IoTCenter.Areas.Admin.Controllers
public override IQueryable<OrganSceneTigger> Query(PagedListModel<EditOrganSceneTiggerModel> model, IQueryable<OrganSceneTigger> query) public override IQueryable<OrganSceneTigger> Query(PagedListModel<EditOrganSceneTiggerModel> model, IQueryable<OrganSceneTigger> query)
{ {
return query return query
.WhereIf(model.Query.OrganId.HasValue, o => o.OrganScene.OrganId == model.Query.OrganId.Value)
.WhereIf(model.Query.NodeId.HasValue, o => o.Data.Device.NodeId == model.Query.NodeId.Value) .WhereIf(model.Query.NodeId.HasValue, o => o.Data.Device.NodeId == model.Query.NodeId.Value)
.WhereIf(model.Query.OrganSceneId.HasValue, o => o.OrganSceneId == model.Query.OrganSceneId.Value) .WhereIf(model.Query.OrganSceneId.HasValue, o => o.OrganSceneId == model.Query.OrganSceneId.Value)
.WhereIf(model.Query.DeviceId.HasValue, o => o.Data.DeviceId == model.Query.DeviceId.Value) .WhereIf(model.Query.DeviceId.HasValue, o => o.Data.DeviceId == model.Query.DeviceId.Value)

@ -1,4 +1,4 @@
using Application.Domain.Entities; using Application.Domain.Entities;
using Infrastructure.Application; using Infrastructure.Application;
using Infrastructure.Data; using Infrastructure.Data;
using Infrastructure.Extensions; using Infrastructure.Extensions;
@ -7,7 +7,6 @@ using IoT.Shared.Areas.Admin.Controlls;
using IoTCenter.Application.Models; using IoTCenter.Application.Models;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.ModelBinding.Binders;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using System; using System;
@ -31,10 +30,10 @@ namespace IoTCenter.Areas.Admin.Controllers
public override IQueryable<OrganSceneTimer> Query(PagedListModel<EditOrganSceneTimerModel> model, IQueryable<OrganSceneTimer> query) public override IQueryable<OrganSceneTimer> Query(PagedListModel<EditOrganSceneTimerModel> model, IQueryable<OrganSceneTimer> query)
{ {
return query return query
.WhereIf(model.Query.OrganId.HasValue, o => o.OrganScene.OrganId == model.Query.OrganId.Value)
.WhereIf(model.Query.OrganSceneId.HasValue, o => o.OrganSceneId == model.Query.OrganSceneId.Value) .WhereIf(model.Query.OrganSceneId.HasValue, o => o.OrganSceneId == model.Query.OrganSceneId.Value)
.WhereIf(!string.IsNullOrEmpty(model.Query.Name), o => o.Name.Contains(model.Query.Name)) .WhereIf(!string.IsNullOrEmpty(model.Query.Name), o => o.Name.Contains(model.Query.Name))
.WhereIf(model.Query.Disabled.HasValue, o => o.Disabled == model.Query.Disabled.Value); .WhereIf(model.Query.Disabled.HasValue, o => o.Disabled == model.Query.Disabled.Value);
;
} }
public override IQueryable<OrganSceneTimer> Include(IQueryable<OrganSceneTimer> query) public override IQueryable<OrganSceneTimer> Include(IQueryable<OrganSceneTimer> query)

@ -486,7 +486,7 @@ namespace IoTNode.DeviceServices.FBee
if (deviceId == 0x000a) if (deviceId == 0x000a)
{ {
} }
if (deviceType != null) if (deviceType != null && zoneType != 0x0000)
{ {
var deviceIcon = deviceType.Icon; var deviceIcon = deviceType.Icon;
var deviceName = deviceType.Name; var deviceName = deviceType.Name;
@ -623,7 +623,7 @@ namespace IoTNode.DeviceServices.FBee
} }
else else
{ {
this._logger.LogDebug($"unknown device id :{deviceId}"); this._logger.LogDebug($"unknown device id or zone type :{deviceId} {zoneType}");
} }
} }
catch (Exception ex) catch (Exception ex)

@ -1,4 +1,4 @@
using System.Reflection; using System.Reflection;
[assembly: AssemblyVersion("1.0.0.0")] [assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0.20092702")] [assembly: AssemblyInformationalVersion("1.0.0.20092801")]

@ -1,4 +1,4 @@
using System.Reflection; using System.Reflection;
[assembly: AssemblyVersion("1.0.0.0")] [assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0.20092702")] [assembly: AssemblyInformationalVersion("1.0.0.20092802")]

@ -1,5 +1,5 @@
<template> <template>
<layout :title="data.schema.title"> <layout :htmltitle="data.schema.title">
<h1 style="font-size:1.5rem;margin:.5em 0;">{{data.schema.title}}详情页</h1> <h1 style="font-size:1.5rem;margin:.5em 0;">{{data.schema.title}}详情页</h1>
<slot></slot> <slot></slot>
<div class="row"> <div class="row">

@ -1,4 +1,4 @@
<template> <template>
<div> <div>
<select class="col-xs-10 col-sm-5 MultiSelectList" multiple ref="select" :name="currentName" v-model="currentValue"> <select class="col-xs-10 col-sm-5 MultiSelectList" multiple ref="select" :name="currentName" v-model="currentValue">
<template v-for="(item,index) in list"> <template v-for="(item,index) in list">
@ -28,6 +28,7 @@
$(this.$refs.select).treeMultiselect({ $(this.$refs.select).treeMultiselect({
enableSelectAll: true, enableSelectAll: true,
searchable: true, searchable: true,
searchParams: ['section', 'text'],
selectAllText: "全选", selectAllText: "全选",
unselectAllText: "反选" unselectAllText: "反选"
}); });

@ -286,6 +286,14 @@
</li> </li>
<template v-if="data.roles.indexOf('超级管理员')===0"> <template v-if="data.roles.indexOf('超级管理员')===0">
<li class="nav-header">运维</li> <li class="nav-header">运维</li>
<li class="nav-item">
<router-link :key="$route.fullPath" to="/routes/admin/system.html?area=admin" :class="getLinkClass('LiveRecord')">
<i class="far fa-circle nav-icon"></i>
<p>
运维
</p>
</router-link>
</li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" target="_blank" href="/JobServer/job"> <a class="nav-link" target="_blank" href="/JobServer/job">
<i class="far fa-circle nav-icon"></i> <i class="far fa-circle nav-icon"></i>
@ -382,7 +390,8 @@
</footer> </footer>
</div> </div>
</template> </template>
<script>export default { <script>
export default {
data: function () { data: function () {
return { return {
version: config.version, version: config.version,
@ -406,7 +415,7 @@
} }
}, },
mounted: function () { mounted: function () {
document.querySelector('title').innerText = this.$attrs.title; document.querySelector('title').innerText = this.$attrs.htmltitle;
var vm = this; var vm = this;
axios.post(this.url).then(function (response) { axios.post(this.url).then(function (response) {
vm.data = response.data; vm.data = response.data;

@ -1,5 +1,5 @@
<template> <template>
<layout :title="title"> <layout :htmltitle="title">
<div class="row mb-2"> <div class="row mb-2">
<div class="col-sm-6"> <div class="col-sm-6">
<h1 style="font-size:1.5rem;margin:.5em 0;">{{title}}</h1> <h1 style="font-size:1.5rem;margin:.5em 0;">{{title}}</h1>
@ -34,7 +34,7 @@
<div class="dataTables_wrapper dt-bootstrap4"> <div class="dataTables_wrapper dt-bootstrap4">
<!--list table--> <!--list table-->
<div class="row"> <div class="row">
<div class="col-12"> <div class="col-12" style="overflow-x:auto;">
<table ref="list" class="table table-bordered table-striped dataTable dtr-inline"> <table ref="list" class="table table-bordered table-striped dataTable dtr-inline">
<thead> <thead>
<tr> <tr>
@ -179,7 +179,7 @@
return key !== 'id' && value.type !== 'array'; return key !== 'id' && value.type !== 'array';
}, },
onSubmit: function () { onSubmit: function () {
this.load(); this.load(1);
}, },
deleteAll: function () { deleteAll: function () {
var vm = this; var vm = this;
@ -194,11 +194,11 @@
axios.post(url, data).then(function (response) { axios.post(url, data).then(function (response) {
if (response.status === 204) { if (response.status === 204) {
setTimeout(function () { setTimeout(function () {
vm.load(); vm.load(1);
}, 1000); }, 1000);
} }
else { else {
Swal.fire(response.data).then(o => vm.load()); Swal.fire(response.data).then(o => vm.load(1));
} }
}); });
} }

@ -1,5 +1,5 @@
<template> <template>
<layout :title="title"> <layout :htmltitle="title">
<h1 style="font-size:1.5rem;margin:.5em 0;">{{title}}</h1> <h1 style="font-size:1.5rem;margin:.5em 0;">{{title}}</h1>
<div class="row"> <div class="row">
<div class="col-12"> <div class="col-12">

@ -33,7 +33,7 @@
<script src="lib/jquery/jquery.min.js"></script> <script src="lib/jquery/jquery.min.js"></script>
<script src="lib/lodash/lodash.min.js"></script> <script src="lib/lodash/lodash.min.js"></script>
<script src="lib/qs/qs.min.js"></script> <script src="lib/qs/qs.min.js"></script>
<script src="lib/vue/vue.js"></script> <script src="lib/vue/vue.min.js"></script>
<script src="lib/vuex/vuex.min.js"></script> <script src="lib/vuex/vuex.min.js"></script>
<script src="lib/vue-router/vue-router.min.js"></script> <script src="lib/vue-router/vue-router.min.js"></script>
<script src="lib/linq.js/linq.min.js"></script> <script src="lib/linq.js/linq.min.js"></script>

@ -1,5 +1,5 @@
var config = { var config = {
version: '1.0.0.20091501', version: '1.0.0.20092802',
debug: window.location.search.indexOf('debug') > -1, debug: window.location.search.indexOf('debug') > -1,
baseUrl: window.location.protocol + '//' + window.location.host, baseUrl: window.location.protocol + '//' + window.location.host,
uploadUrl: window.location.protocol + '//' + window.location.host + '/IoTCenter/File/Upload', uploadUrl: window.location.protocol + '//' + window.location.host + '/IoTCenter/File/Upload',

@ -1,5 +1,5 @@
<template> <template>
<layout :title="title"> <layout :htmltitle="title">
<h1 style="font-size:1.5rem;margin:.5em 0;">{{title}}</h1> <h1 style="font-size:1.5rem;margin:.5em 0;">{{title}}</h1>
<div class="row"> <div class="row">
<div class="col-12"> <div class="col-12">

@ -1,5 +1,5 @@
<template> <template>
<layout title="后台首页"> <layout htmltitle="后台首页">
<div v-if="model"> <div v-if="model">
<h2 style="font-size:1.5rem;margin:.5em 0;">产品</h2> <h2 style="font-size:1.5rem;margin:.5em 0;">产品</h2>
<div class="row"> <div class="row">
@ -33,7 +33,6 @@
</div> </div>
</div> </div>
</div> </div>
<button class="btn btn-success" @click="updateTimer">更新定时器</button>
</div> </div>
</layout> </layout>
</template> </template>

@ -1,5 +1,5 @@
<template> <template>
<layout :title="title"> <layout :htmltitle="title">
<h1 style="font-size:1.5rem;margin:.5em 0;">{{title}}</h1> <h1 style="font-size:1.5rem;margin:.5em 0;">{{title}}</h1>
<div class="row"> <div class="row">
<div class="col-12"> <div class="col-12">

@ -0,0 +1,35 @@
<template>
<layout :htmltitle="title">
<div class="row overlay-wrapper">
<div class="col-md-12">
<div class="card">
<button class="btn btn-success" @click="updateTimer">更新定时器</button>
</div>
</div>
</div>
</layout>
</template>
<script>
export default {
data: function () {
return {
title: '运维',
}
},
mounted: function () {
},
methods: {
updateTimer: function () {
axios.post(this.baseUrl + '/IoTCenter/api/v1/site/UpdateTimer')
.then(function (response) {
Swal.fire({ title: '操作完成', timer: 1500 });
})
.catch(function (error) {
Swal.fire({ title: '操作失败', timer: 1500 });
});
}
},
beforeDestroy: function () {
}
}
</script>

@ -1,5 +1,5 @@
<template> <template>
<layout :title="title"> <layout :htmltitle="title">
<h2 style="font-size:1.5rem;margin:.5em 0;">产品<span data-toggle="tooltip" class="badge bg-green">{{products.length}}</span></h2> <h2 style="font-size:1.5rem;margin:.5em 0;">产品<span data-toggle="tooltip" class="badge bg-green">{{products.length}}</span></h2>
<div class="row"> <div class="row">
<div class="col-md-2 col-sm-4 col-xs-6" v-for="item in products"> <div class="col-md-2 col-sm-4 col-xs-6" v-for="item in products">

@ -1,5 +1,5 @@
<template> <template>
<layout :title="title"> <layout :htmltitle="title">
<div v-if="device"> <div v-if="device">
<div class="row"> <div class="row">
<div class="col"> <div class="col">
@ -14,9 +14,9 @@
<div class="card-header"> <div class="card-header">
<h3 class="card-title">{{data.name}}(单位:{{data.unit}})</h3> <h3 class="card-title">{{data.name}}(单位:{{data.unit}})</h3>
<ul role="tablist" class="nav nav-tabs card-tools"> <ul role="tablist" class="nav nav-tabs card-tools">
<li class="nav-item"><a href="#tab_11165f469-8f244804008d1500" data-toggle="tab" class="nav-link active" @click="changeTime(data.key,'1d',data.name)">近24小时</a></li> <li class="nav-item"><a href="javascript:;" data-toggle="tab" class="nav-link active" @click="tabClick($event,data.key,'1d',data.name)">近24小时</a></li>
<li class="nav-item"><a href="#tab_21165f469-8f244804008d1500" data-toggle="tab" class="nav-link" @click="changeTime(data.key,'7d',data.name)">近7日</a></li> <li class="nav-item"><a href="javascript:;" data-toggle="tab" class="nav-link" @click="tabClick($event,data.key,'7d',data.name)">近7日</a></li>
<li class="nav-item"><a href="#tab_31165f469-8f244804008d1500" data-toggle="tab" class="nav-link" @click="changeTime(data.key,'30d',data.name)">近30日</a></li> <li class="nav-item"><a href="javascript:;" data-toggle="tab" class="nav-link" @click="tabClick($event,data.key,'30d',data.name)">近30日</a></li>
</ul> </ul>
</div> </div>
<div class="card-body"> <div class="card-body">
@ -70,6 +70,14 @@
this.changeTime(dataList[i].key, '1d', dataList[i].name); this.changeTime(dataList[i].key, '1d', dataList[i].name);
} }
}, },
tabClick: function (event, key, time, title) {
this.changeTime(key, time, title);
var link = $(event.currentTarget);
if (!link.hasClass('active')) {
link.parent().siblings().find('a.active').removeClass('active');
link.addClass('active');
}
},
changeTime: function (key, time, title) { changeTime: function (key, time, title) {
var vm = this; var vm = this;
var url = this.baseUrl + '/IoTCenter/api/v1/Device/GetChartData'; var url = this.baseUrl + '/IoTCenter/api/v1/Device/GetChartData';

@ -1,5 +1,5 @@
<template> <template>
<layout :title="title"> <layout :htmltitle="title">
<!--场景--> <!--场景-->
<div class="row" v-if="node.scenes.length"> <div class="row" v-if="node.scenes.length">
<div class="col"> <div class="col">

@ -1,5 +1,5 @@
<template> <template>
<layout :title="title"> <layout :htmltitle="title">
<div class="row overlay-wrapper"> <div class="row overlay-wrapper">
<div class="col-md-12" v-if="nodes.length"> <div class="col-md-12" v-if="nodes.length">
<div class="card"> <div class="card">

@ -1,5 +1,5 @@
<template> <template>
<layout :title="title"> <layout :htmlTitle="title">
<div class="row overlay-wrapper"> <div class="row overlay-wrapper">
<div class="col-md-2 col-sm-4 col-xs-6" v-for="item in organs"> <div class="col-md-2 col-sm-4 col-xs-6" v-for="item in organs">
<div class="card"> <div class="card">

@ -1,5 +1,5 @@
<template> <template>
<layout :title="title"> <layout :htmltitle="title">
<div class="row mb-2"> <div class="row mb-2">
<div class="col-sm-6"> <div class="col-sm-6">
<h1>{{product.name}}</h1> <h1>{{product.name}}</h1>

@ -1,5 +1,5 @@
<template> <template>
<layout :title="title"> <layout :htmltitle="title">
<h1>{{title}}</h1> <h1>{{title}}</h1>
<div class="row"> <div class="row">
<div class="col-12"> <div class="col-12">
@ -38,7 +38,6 @@
</div> </div>
<div class="col-sm-10"> <div class="col-sm-10">
<button type="submit" class="btn btn-primary">确定</button> <button type="submit" class="btn btn-primary">确定</button>
<router-link :to="{path:base+'index.html',query:{area:area,entity:entity}}" class="btn btn-default">返回</router-link>
</div> </div>
</div> </div>
</div> </div>
@ -142,6 +141,7 @@
if (response.status === 200) { if (response.status === 200) {
if (response.data.errors) { if (response.data.errors) {
this.data = response.data; this.data = response.data;
Swal.fire(response.data.errors[0].value.errors[0].errorMessage)
} }
else { else {
store.commit('login', response.data); store.commit('login', response.data);

@ -46,3 +46,4 @@ vhost __defaultVhost__ {
} }
} }
# ffmpeg -re -f video4linux2 -i /dev/video10 -c:v libx264 -c:a aac -f flv rtmp://localhost/live/test

@ -54,6 +54,6 @@ fi
if uname -a | grep -q "NanoPC-T4" if uname -a | grep -q "NanoPC-T4"
then then
echo "nanopc-t4" echo "nanopc-t4"
nmcli connection modify 'Wired connection 1' connection.autoconnect yes ipv4.method manual ipv4.address 192.168.1.3/24 ipv4.gateway 192.168.1.1 ipv4.dns "8.8.8.8 223.5.5.5 119.29.29.29 180.76.76.76" nmcli connection modify 'Wired connection 1' connection.autoconnect yes ipv4.method manual ipv4.address 192.168.1.3/24 ipv4.gateway 192.168.1.1 ipv4.dns "223.5.5.5 119.29.29.29 180.76.76.76"
nmcli c up 'Wired connection 1' nmcli c up 'Wired connection 1'
fi fi
Loading…
Cancel
Save