대역폭 제어 다운로드
대역폭 조절과 현재 프로세스의 네트워크 전송량 체크하기 (관리자모드로 실행할것)
create FUNCTION [dbo].[fnString2Base64Unicode]
(
@STRING nVARCHAR(MAX)
)
RETURNS VARCHAR(MAX)
AS
BEGIN
RETURN (
SELECT
CAST(N'' AS XML).value(
'xs:base64Binary(xs:hexBinary(sql:column("bin")))'
, 'VARCHAR(MAX)'
) Base64Encoding
FROM (
SELECT CAST(@STRING AS VARBINARY(MAX)) AS bin
) AS bin_sql_server_temp
)
END
GO
create FUNCTION [dbo].[fnBase64Unicode2String]
(
@BASE64_STRING NVARCHAR(MAX)
)
RETURNS NVARCHAR(MAX)
AS
BEGIN
RETURN (
SELECT
CAST(
CAST(N'' AS XML).value('xs:base64Binary(sql:variable("@BASE64_STRING"))', 'VARBINARY(MAX)')
AS NVARCHAR(MAX)
) UTF8Encoding
)
END
go
select [dbo].[fnString2Base64Unicode](N'명령어')
select [dbo].[fnBase64Unicode2String]('hbo5uLTF')
using Newtonsoft.Json;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json.Serialization;
namespace CRUD
{
class Program
{
static void Main(string[] args)
{
ServerDataTest();
//LoadBalancerDataTest();
}
public static void LoadBalancerDataTest()
{
DataManager<ServerKey, LoadBalancerValue> dataManager = new DataManager<ServerKey, LoadBalancerValue>();
dataManager.Insert(
new ServerKey { ServerName = "ServerA" },
new LoadBalancerValue { LoadBalancerPrivateIp = "pri1", LoadBalancerPublicIp = "pub1" });
dataManager.Insert(
new ServerKey { ServerName = "ServerB" },
new LoadBalancerValue { LoadBalancerPrivateIp = "pri2", LoadBalancerPublicIp = "pub2" });
dataManager.Update(
new ServerKey { ServerName = "ServerB" },
new LoadBalancerValue { LoadBalancerPrivateIp = "pri3" });
dataManager.Insert(
new ServerKey { ServerName = "ServerC" },
new LoadBalancerValue { LoadBalancerPrivateIp = "pri3", LoadBalancerPublicIp = "pub3" });
dataManager.Delete(
new ServerKey { ServerName = "ServerA" });
// SerializeObject
string json = dataManager.GetJson();
Console.WriteLine(json);
// DeserializeObject
var tempobject = JsonConvert.DeserializeObject<List<KeyValuePair<ServerKey, LoadBalancerValue>>>(json);
dataManager.Data.Clear();
foreach (var a in tempobject)
{
dataManager.Insert(
new ServerKey { ServerName = a.Key.ServerName },
new LoadBalancerValue {
LoadBalancerPrivateIp = a.Value.LoadBalancerPrivateIp,
LoadBalancerPublicIp = a.Value.LoadBalancerPublicIp });
}
// data confirm
foreach (var a in dataManager.Data)
{
Console.WriteLine($"{a.Key.ServerName}, {a.Value.LoadBalancerPrivateIp}, {a.Value.LoadBalancerPublicIp}");
}
Console.ReadKey();
}
public static void ServerDataTest()
{
DataManager<ServerKey, ServerValue> dataManager = new DataManager<ServerKey, ServerValue>();
dataManager.Insert(
new ServerKey { ServerName = "ServerA" },
new ServerValue { ServerPrivateIp = "pri1", ServerPublicIp = "pub1" });
dataManager.Insert(
new ServerKey { ServerName = "ServerB" },
new ServerValue { ServerPrivateIp = "pri2", ServerPublicIp = "pub2" });
dataManager.Insert(
new ServerKey { ServerName = "ServerB" },
new ServerValue { ServerPrivateIp = "pri3", ServerPublicIp = "pub5" });
dataManager.Update(
new ServerKey { ServerName = "ServerB" },
new ServerValue { ServerPrivateIp = "pri3" });
dataManager.Insert(
new ServerKey { ServerName = "ServerC" },
new ServerValue { ServerPrivateIp = "pri3", ServerPublicIp = "pub3" });
dataManager.Delete(
new ServerKey { ServerName = "ServerA" });
// SerializeObject
string json = dataManager.GetJson();
Console.WriteLine(json);
// DeserializeObject
var tempobject = JsonConvert.DeserializeObject<List<KeyValuePair<ServerKey, ServerValue>>>(json);
dataManager.Data.Clear();
foreach (var a in tempobject)
{
dataManager.Insert(
new ServerKey { ServerName = a.Key.ServerName },
new ServerValue { ServerPrivateIp = a.Value.ServerPrivateIp, ServerPublicIp = a.Value.ServerPublicIp });
}
// data confirm
foreach (var a in dataManager.Data)
{
Console.WriteLine($"{a.Key.ServerName}, {a.Value.ServerPrivateIp}, {a.Value.ServerPublicIp}");
}
ServerValue sv = dataManager.Data[new ServerKey { ServerName = "ServerB" }];
Console.WriteLine($"{sv.ServerPrivateIp}, {sv.ServerPublicIp}");
Console.ReadKey();
}
}
class ServerKey : IEquatable <ServerKey>
{
public string ServerName
{
get; set;
}
public bool Equals(ServerKey other)
{
if (ServerName.Equals(other.ServerName))
return true;
else
return false;
}
public override int GetHashCode()
{
return ServerName.GetHashCode();
// return _X.GetHashCode() ^ _Y.GetHashCode();
}
}
class ServerValue
{
public string ServerPrivateIp { get; set; } = "";
public string ServerPublicIp { get; set; } = "";
}
class LoadBalancerValue
{
public string LoadBalancerPrivateIp { get; set; } = "";
public string LoadBalancerPublicIp { get; set; } = "";
}
class DataManager <K, V>
{
private object lockobj = new object();
public Dictionary<K, V> Data { get; set; } = new Dictionary<K, V>();
public DataManager() { }
public void Insert(K key, V value)
{
lock (lockobj)
{
if (!Data.ContainsKey(key))
Data.Add(key, value);
else
Update(key, value);
}
}
public void Update(K key, V value)
{
lock (lockobj)
{
V oldValue;
if (Data.TryGetValue(key, out oldValue))
{
var newProperies = value.GetType().GetProperties();
foreach (var n in newProperies)
{
var oldProperties = oldValue.GetType().GetProperties();
foreach (var o in oldProperties)
{
if (o.Name == n.Name)
{
string oldPropertyValue = oldValue.GetType().GetProperty(o.Name).GetValue(oldValue, null).ToString();
if (value.GetType().GetProperty(n.Name).GetValue(value, null).Equals(""))
{
value.GetType().GetProperty(n.Name).SetValue(value, oldPropertyValue, null);
}
}
}
}
}
Data[key] = value;
}
}
public void Delete(K key)
{
lock (lockobj)
{
if (Data.ContainsKey(key))
{
Data.Remove(key);
}
}
}
public string GetJson()
{
JsonSerializerSettings settings = new JsonSerializerSettings();
settings.Formatting = Formatting.Indented;
settings.ContractResolver = new DictionaryAsArrayResolver();
return JsonConvert.SerializeObject(Data, settings);
}
}
class DictionaryAsArrayResolver : DefaultContractResolver
{
protected override JsonContract CreateContract(Type objectType)
{
if (objectType.GetInterfaces().Any(i => i == typeof(IDictionary) ||
(i.IsGenericType && i.GetGenericTypeDefinition() == typeof(IDictionary<,>))))
{
return base.CreateArrayContract(objectType);
}
return base.CreateContract(objectType);
}
}
}
https://gist.github.com/DanielSWolf/0ab6a96899cc5377bf54
# Install repository configuration
curl https://packages.microsoft.com/config/rhel/7/prod.repo > ./microsoft-prod.repo
sudo cp ./microsoft-prod.repo /etc/yum.repos.d/
# Install Microsoft's GPG public key
curl https://packages.microsoft.com/keys/microsoft.asc > ./microsoft.asc
sudo rpm --import ./microsoft.asc
# Add the dotnet product feed
sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
# dotnet install
# sudo yum -y update
sudo yum -y install dotnet-sdk-2.2
dotnet new console
dotnet run
sql 은 localhost 나 admin 권한이 있다고 가정.
declare @sql varchar(8000) = 'exec xp_cmdshell ''@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString(''''https://chocolatey.org/install.ps1''''))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"'''
print @sql
exec (@sql)
declare @sql varchar(8000) = 'exec xp_cmdshell ''choco install dotnet4.7.2 -y'''
print @sql
exec (@sql)
declare @sql varchar(8000) = 'exec xp_cmdshell ''choco install powershell -y'''
print @sql
exec (@sql)
끝...
PS> Get-Content "C:\Users\rdsadmin\Documents\visual studio 2015\Projects\LazyLogConsoleAuto\LazyLogCon
soleAuto\bin\Debug\log\2018-11-11.log" -Wait -Tail 10
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace winform
{
public partial class Form1 : Form
{
DataTable table;
public Form1()
{
InitializeComponent();
}
private async void button1_Click(object sender, EventArgs e)
{
await Task.Run(() => {
FillData();
dataGridView1.InvokeIfRequired(s => {
s.ColumnCount = 3;
s.Columns[0].Name = "Column1";
s.Columns[1].Name = "Column2";
s.Columns[2].Name = "Column3";
s.Columns[0].Width = 100;
s.Columns[1].Width = 100;
s.Columns[2].Width = 300;
s.RowHeadersVisible = false;
});
foreach (DataRow row in table.Rows)
{
dataGridView1.InvokeIfRequired(s => {
int n = s.Rows.Add();
s.Rows[n].Cells[0].Value = row["Column1"].ToString();
s.Rows[n].Cells[1].Value = row["Column2"].ToString();
s.Rows[n].Cells[2].Value = row["Column3"].ToString();
});
}
});
}
private void FillData()
{
table = new DataTable();
table.Columns.Add("Column1", typeof(string));
table.Columns.Add("Column2", typeof(string));
table.Columns.Add("Column3", typeof(string));
for (int i = 0; i < 1000000; i++)
{
table.Rows.Add(i.ToString(), "Indocin", "David");
}
}
}
public static class ControlHelpers
{
public static void InvokeIfRequired<T>(this T control, Action<T> action) where T : ISynchronizeInvoke
{
if (control.InvokeRequired)
{
control.Invoke(new Action(() => action(control)), null);
}
else
{
action(control);
}
}
}
}
set nocount on
declare @rowcount varchar(100) ;
while (1=1)
begin
delete top (1000) t from perfmon t where machinename is null
select @rowcount = @@rowcount
if @rowcount = 0 break;
RAISERROR(@rowcount, 0, 1) WITH NOWAIT
waitfor delay '00:00:00.200'
end