المشاركات : 194
المواضيع 57
الإنتساب : Apr 2016
السمعة :
1
الشكر: 13
تم شكره 24 مرات في 21 مشاركات
انا حول مع الكود وفعلا اشتغل وجاب الناس الى شغاله الان
بس مش جايب كل حاجة غير اول 3 والباقى البيانات لا يعنى الوقت الجهاز ده بقالو اد ايه منصل بالانترنت كمان لما بضغط على يجيب الناس وبعد كدة يجيب تكرار الصف مرتين وفاضي
الكود اهو
كود :
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Try
Dim IPAddress As System.Net.IPAddress = System.Net.IPAddress.Parse(ip.Text)
Dim mk = New Mikrotik(IPAddress)
If Not mk.Login(user.Text, pass.Text) Then
Console.WriteLine("Cant log in")
mk.Close()
Console.ReadLine()
Return
End If
mk.Send("/ip/hotspot/active/print", False)
mk.Send("=.proplist=.id", False)
mk.Send("=.proplist=server", False)
mk.Send("=.proplist=user", False)
mk.Send("=.proplist=address", False)
mk.Send("=.proplist=mac-address=", False)
mk.Send("=.proplist=uptime=", True)
mk.Send("=.proplist=keepalive-timeout=", False)
mk.Send("=.proplist=radius", False)
For Each row In mk.Read()
Dim id As String = Regex.Match(row, "(?<=id=).+?(?=\=|$)").Value
Dim server As String = Regex.Match(row, "(?<=server=).+?(?==|$)").Value
Dim user As String = Regex.Match(row, "(?<=user=).+?(?==|$)").Value
Dim address As String = Regex.Match(row, "(?<=address=).+?(?==|$)").Value
Dim mac_address As String = Regex.Match(row, "(?<=mac-address=).+?(?==|$)").Value
Dim login_by As String = Regex.Match(row, "(?<=login-by=).+?(?==|$)").Value
Dim uptime As String = Regex.Match(row, "(?<=uptime=).+?(?==|$)").Value
Dim keepalive_timeout As String = Regex.Match(row, "(?<=keepalive-timeout=).+?(?==|$)").Value
Dim radius As String = Regex.Match(row, "(?<=radius=).+?(?==|$)").Value
DGV1.Rows.Add(id, server, user, address, uptime, keepalive_timeout, radius)
Next
Conn.Close()
MsgBox("تم الاتصال")
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
المشاركات : 27
المواضيع 10
الإنتساب : Aug 2016
السمعة :
0
الشكر: 26
تم شكره 18 مرات في 10 مشاركات
(25-09-16, 11:50 PM)ممدوح كتب : وعليكم السلام ورحمة الله وبركاته
عملت لك دالة خاصة لمشروعك وضيفتها تحويل هذه السلسة النصية الخاصة إلى Datatable لكي يسهل التعامل مع بيانتها في البحث بسهول باستخدام Linq
كود :
#Region " StringToDatatable "
Function StringToDatatable(ByVal s As String) As DataTable
Dim mDataTable As New DataTable
mDataTable.Columns.AddRange(New DataColumn() {New DataColumn("id"), New DataColumn("customer"), New DataColumn("name"), New DataColumn("actual-profile")})
mDataTable.Columns.AddRange(New DataColumn() {New DataColumn("password"), New DataColumn("shared-users"), New DataColumn("wireless-psk")})
mDataTable.Columns.AddRange(New DataColumn() {New DataColumn("wireless-enc-key"), New DataColumn("wireless-enc-algo"), New DataColumn("last-seen")})
mDataTable.Columns.AddRange(New DataColumn() {New DataColumn("active"), New DataColumn("incomplete"), New DataColumn("disabled")})
Dim q =
From x As String
In (From x As System.Text.RegularExpressions.Match In System.Text.RegularExpressions.Regex.Matches(s, "(?<=!re).+?(?=!)") Select x.Value)
Select New user With {
.id = System.Text.RegularExpressions.Regex.Match(x, "(?<==.id=).*?(?==)").Value,
.customer = System.Text.RegularExpressions.Regex.Match(x, "(?<==customer=).*?(?==)").Value,
.name = System.Text.RegularExpressions.Regex.Match(x, "(?<==name=).*?(?==)").Value,
.actual_profile = System.Text.RegularExpressions.Regex.Match(x, "(?<==actual-profile=).*?(?==)").Value,
.password = System.Text.RegularExpressions.Regex.Match(x, "(?<==password=).*?(?==)").Value,
.shared_users = System.Text.RegularExpressions.Regex.Match(x, "(?<==shared-users=).*?(?==)").Value,
.wireless_psk = System.Text.RegularExpressions.Regex.Match(x, "(?<==wireless-psk=).*?(?==)").Value,
.wireless_enc_key = System.Text.RegularExpressions.Regex.Match(x, "(?<==wireless-enc-key=)*?(?==)").Value,
.wireless_enc_algo = System.Text.RegularExpressions.Regex.Match(x, "(?<==wireless-enc-algo=).*?(?==)").Value,
.last_seen = System.Text.RegularExpressions.Regex.Match(x, "(?<==last-seen=).*?(?==)").Value,
.active = System.Text.RegularExpressions.Regex.Match(x, "(?<==active=).*?(?==)").Value,
.incomplete = System.Text.RegularExpressions.Regex.Match(x, "(?<==incomplete=).*?(?==)").Value,
.disabled = System.Text.RegularExpressions.Regex.Match(x, "(?<==disabled=).*").Value
}
For Each u As user In q
mDataTable.Rows.Add(u.id, u.customer, u.name, u.actual_profile, u.password, u.shared_users, u.wireless_psk, u.wireless_enc_key,
u.wireless_enc_algo, u.last_seen, u.active, u.incomplete, u.disabled)
Next
Return mDataTable
End Function
Structure user
Dim id As String
Dim customer As String
Dim name As String
Dim actual_profile As String
Dim password As String
Dim shared_users As String
Dim wireless_psk As String
Dim wireless_enc_key As String
Dim wireless_enc_algo As String
Dim last_seen As String
Dim active As String
Dim incomplete As String
Dim disabled As String
End Structure
#End Region
جربها بفورم جديد في زر وأداة داتاجريدفيو
كود :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim dt As DataTable = StringToDatatable(mytxt)
Me.DataGridView1.DataSource = dt
End Sub
والأفضل أن تضع البيانات النصية في ملف نصي وليس في الكود
جرب استخدام هذا الكود .
المشاركات : 194
المواضيع 57
الإنتساب : Apr 2016
السمعة :
1
الشكر: 13
تم شكره 24 مرات في 21 مشاركات
(07-02-18, 10:58 PM)saad mahyoub كتب : (25-09-16, 11:50 PM)ممدوح كتب : وعليكم السلام ورحمة الله وبركاته
عملت لك دالة خاصة لمشروعك وضيفتها تحويل هذه السلسة النصية الخاصة إلى Datatable لكي يسهل التعامل مع بيانتها في البحث بسهول باستخدام Linq
كود :
#Region " StringToDatatable "
Function StringToDatatable(ByVal s As String) As DataTable
Dim mDataTable As New DataTable
mDataTable.Columns.AddRange(New DataColumn() {New DataColumn("id"), New DataColumn("customer"), New DataColumn("name"), New DataColumn("actual-profile")})
mDataTable.Columns.AddRange(New DataColumn() {New DataColumn("password"), New DataColumn("shared-users"), New DataColumn("wireless-psk")})
mDataTable.Columns.AddRange(New DataColumn() {New DataColumn("wireless-enc-key"), New DataColumn("wireless-enc-algo"), New DataColumn("last-seen")})
mDataTable.Columns.AddRange(New DataColumn() {New DataColumn("active"), New DataColumn("incomplete"), New DataColumn("disabled")})
Dim q =
From x As String
In (From x As System.Text.RegularExpressions.Match In System.Text.RegularExpressions.Regex.Matches(s, "(?<=!re).+?(?=!)") Select x.Value)
Select New user With {
.id = System.Text.RegularExpressions.Regex.Match(x, "(?<==.id=).*?(?==)").Value,
.customer = System.Text.RegularExpressions.Regex.Match(x, "(?<==customer=).*?(?==)").Value,
.name = System.Text.RegularExpressions.Regex.Match(x, "(?<==name=).*?(?==)").Value,
.actual_profile = System.Text.RegularExpressions.Regex.Match(x, "(?<==actual-profile=).*?(?==)").Value,
.password = System.Text.RegularExpressions.Regex.Match(x, "(?<==password=).*?(?==)").Value,
.shared_users = System.Text.RegularExpressions.Regex.Match(x, "(?<==shared-users=).*?(?==)").Value,
.wireless_psk = System.Text.RegularExpressions.Regex.Match(x, "(?<==wireless-psk=).*?(?==)").Value,
.wireless_enc_key = System.Text.RegularExpressions.Regex.Match(x, "(?<==wireless-enc-key=)*?(?==)").Value,
.wireless_enc_algo = System.Text.RegularExpressions.Regex.Match(x, "(?<==wireless-enc-algo=).*?(?==)").Value,
.last_seen = System.Text.RegularExpressions.Regex.Match(x, "(?<==last-seen=).*?(?==)").Value,
.active = System.Text.RegularExpressions.Regex.Match(x, "(?<==active=).*?(?==)").Value,
.incomplete = System.Text.RegularExpressions.Regex.Match(x, "(?<==incomplete=).*?(?==)").Value,
.disabled = System.Text.RegularExpressions.Regex.Match(x, "(?<==disabled=).*").Value
}
For Each u As user In q
mDataTable.Rows.Add(u.id, u.customer, u.name, u.actual_profile, u.password, u.shared_users, u.wireless_psk, u.wireless_enc_key,
u.wireless_enc_algo, u.last_seen, u.active, u.incomplete, u.disabled)
Next
Return mDataTable
End Function
Structure user
Dim id As String
Dim customer As String
Dim name As String
Dim actual_profile As String
Dim password As String
Dim shared_users As String
Dim wireless_psk As String
Dim wireless_enc_key As String
Dim wireless_enc_algo As String
Dim last_seen As String
Dim active As String
Dim incomplete As String
Dim disabled As String
End Structure
#End Region
جربها بفورم جديد في زر وأداة داتاجريدفيو
كود :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim dt As DataTable = StringToDatatable(mytxt)
Me.DataGridView1.DataSource = dt
End Sub
والأفضل أن تضع البيانات النصية في ملف نصي وليس في الكود
جرب استخدام هذا الكود .
تمام تسلم ايدك بس الرابط الapi الى هيعرض البيانات فى الجرد هكتبو فين؟
المشاركات : 27
المواضيع 10
الإنتساب : Aug 2016
السمعة :
0
الشكر: 26
تم شكره 18 مرات في 10 مشاركات
المشاركات : 194
المواضيع 57
الإنتساب : Apr 2016
السمعة :
1
الشكر: 13
تم شكره 24 مرات في 21 مشاركات
07-02-18, 11:52 PM
(آخر تعديل لهذه المشاركة : 08-02-18, 02:01 AM {2} بواسطة MOSTAFA.KAMEL.)
(07-02-18, 11:46 PM)saad mahyoub كتب : في نفس الفورم اخي مصطفي
حضرتك بس الكود الخاص بالاتصال اهو تمام الى هيتصل ويعمل تسجيل دخول للسيرفر
كود :
Dim IPAddress As System.Net.IPAddress = System.Net.IPAddress.Parse(ip.Text)
Dim mk = New Mikrotik(IPAddress)
If Not mk.Login(user.Text, pass.Text) Then
Console.WriteLine("Cant log in")
mk.Close()
Console.ReadLine()
Return
End If
ثانيا: الapi الى انا عايز ارسلها للسرفر وعرض البيانات منها
كود :
mk.Send("/ip/hotspot/active/print", False)
mk.Send("=.proplist=.id", False)
mk.Send("=.proplist=server", False)
mk.Send("=.proplist=user", False)
mk.Send("=.proplist=address", True)
mk.Send("=.proplist=mac-address", False)
mk.Send("=.proplist=login-by", False)
mk.Send("=.proplist=uptime", False)
mk.Send("=.proplist=keepalive-timeout", False)
mk.Send("=.proplist=radius", False)
mk.Send("=.proplist=!done", False)
For Each row In mk.Read()
Dim id As String = Regex.Match(row, "(?<=id=).+?(?=\=|$)").Value
Dim server As String = Regex.Match(row, "(?<=server=).+?(?==|$)").Value
Dim user As String = Regex.Match(row, "(?<=user=).+?(?==|$)").Value
Dim address As String = Regex.Match(row, "(?<=address=).+?(?==|$)").Value
Dim mac_address As String = Regex.Match(row, "(?<=mac-address=).+?(?==|$)").Value
Dim login_by As String = Regex.Match(row, "(?<=login-by=).+?(?==|$)").Value
Dim uptime As String = Regex.Match(row, "(?<=uptime=).+?(?==|$)").Value
Dim keepalive_timeout As String = Regex.Match(row, "(?<=keepalive-timeout=).+?(?==|$)").Value
Dim radius As String = Regex.Match(row, "(?<=radius=).+?(?==|$)").Value
dgv.Rows.Add(id, server, user, address , uptime, keepalive_timeout, radius)
Next
Conn.Close()
MsgBox("تم الاتصال")
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
تمام كدة الموضوع تمام لحد هنا الكود شغال وبيجيب البيانات بس بيعرض اول 3 فقط والباقى مش بيعرض البيانات ولو انا غيرت مثلا كلمة server باي كلمة uptime بيعرض البيانات الخاصه بيها بس انا عايز يعرض البيانات الى انا عايزها الى مكتوبه قدام حضرتك
المشاركات : 194
المواضيع 57
الإنتساب : Apr 2016
السمعة :
1
الشكر: 13
تم شكره 24 مرات في 21 مشاركات
المشاركات : 400
المواضيع 0
الإنتساب : Dec 2017
السمعة :
69
الشكر: 46
تم شكره 517 مرات في 325 مشاركات
عليك بمراجعة اسماء البيانات في النص القادم مثل =mac-address= وغيرها من حيث حالة الأحرف أيضا الحرف الكبير والصغير وعلامة -_
يجب التطابق ليستطيع Regex اخذ المعلومة من النص
المشاركات : 194
المواضيع 57
الإنتساب : Apr 2016
السمعة :
1
الشكر: 13
تم شكره 24 مرات في 21 مشاركات
(08-02-18, 02:06 AM)طالب برمجة كتب : عليك بمراجعة اسماء البيانات في النص القادم مثل =mac-address= وغيرها من حيث حالة الأحرف أيضا الحرف الكبير والصغير وعلامة -_
يجب التطابق ليستطيع Regex اخذ المعلومة من النص
فعلا طلع فى حاجات غلط ولما صلحتها اشتغل بس عايز لما اضغ على البوتن ميجيبش مربعات فاضيه بعد ما يظهر البيانات او يعرض البيانات وكمان لما اضغ اكثر من مرة ميكررش البيانات تحت بعضها يعمل مسح ويعرض من جديد
المشاركات : 400
المواضيع 0
الإنتساب : Dec 2017
السمعة :
69
الشكر: 46
تم شكره 517 مرات في 325 مشاركات
08-02-18, 02:24 AM
(آخر تعديل لهذه المشاركة : 08-02-18, 02:28 AM {2} بواسطة طالب برمجة.)
ضع Me.DataGridView1.Rows.Clear في بداية الزر لحذف الاسطر السابقة من الداتاجريد إن وجدت
المربعات الفاضية يعتمد البيانات، فإن لم يكن بها بيانات فطبيعي تظهر فاضية
ممكن تختبر السطر row إذا كان لا يوجد به بيانات فلا يضيف سطر
PHP كود :
If row.Trim <> "" Then dgv.Rows.Add(id, server, user, address, uptime, keepalive_timeout, radius)
المشاركات : 194
المواضيع 57
الإنتساب : Apr 2016
السمعة :
1
الشكر: 13
تم شكره 24 مرات في 21 مشاركات
(08-02-18, 02:24 AM)طالب برمجة كتب : ضع Me.DataGridView1.Rows.Clear في بداية الزر لحذف الاسطر السابقة من الداتاجريد إن وجدت
المربعات الفاضية يعتمد البيانات، فإن لم يكن بها بيانات فطبيعي تظهر فاضية
ممكن تختبر السطر row إذا كان لا يوجد به بيانات فلا يضيف سطر
PHP كود :
If row.Trim <> "" Then dgv.Rows.Add(id, server, user, address, uptime, keepalive_timeout, radius)
هو المسح اشتغل بس برضو بيعرض البيانات وبعد كدة يجيب سطر فى الاخر فاضى
|